You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本开发需求:递归遍历文件夹导出含哈希与文件大小的CSV

问题原因

你的脚本在循环中依次输出MD5哈希对象、SHA1哈希对象、文件长度数值三类不同的数据。Export-CSV仅会识别第一个对象的属性(Path、Hash、Algorithm),后续的SHA1对象会覆盖原有属性,而单独的文件长度数值无法被CSV解析为有效字段,最终导致导出结果缺失文件大小信息。

修正后的脚本
# 脚本执行根目录(可替换为你需要的指定文件夹路径)
$rootDirectory = $PSScriptRoot

# 递归遍历文件,排除指定类型,批量生成包含完整信息的自定义对象
Get-ChildItem -Recurse -Exclude *.txt, *.ps1, *.csv -File | ForEach-Object {
    # 计算相对于根目录的路径
    $relativePath = $_.FullName.Substring($rootDirectory.Length + 1)
    
    # 获取MD5与SHA1哈希值
    $md5 = (Get-FileHash -Algorithm MD5 -Path $_.FullName).Hash
    $sha1 = (Get-FileHash -Algorithm SHA1 -Path $_.FullName).Hash
    
    # 获取文件大小(字节)
    $sizeInBytes = $_.Length

    # 生成包含所有需求字段的自定义对象
    [PSCustomObject]@{
        RelativePath    = $relativePath
        MD5Hash         = $md5
        SHA1Hash        = $sha1
        FileSizeInBytes = $sizeInBytes
    }
} | Export-Csv -Path "$rootDirectory\md5hashes.csv" -NoTypeInformation -Encoding UTF8
关键优化说明
  • 添加-File参数:确保只处理文件,避免遍历目录时触发Get-FileHash报错
  • 统一数据结构:通过PSCustomObject将每个文件的所有信息打包为单一对象,让Export-CSV能完整识别所有字段
  • 相对路径计算:通过字符串截取生成无绝对路径的相对路径,符合需求;若需更兼容不同系统的路径格式,可替换为$relativePath = Resolve-Path -Path $_.FullName -Relative(会生成.\开头的相对路径)
  • 指定UTF8编码:避免CSV文件出现中文乱码问题

内容的提问来源于stack exchange,提问作者user10413810

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 14:05:56