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

PowerShell脚本优化:实现文件相对路径与MB大小分栏及CSV对比

解决方案

一、生成格式正确的分栏CSV

原脚本直接拼接字符串输出,无法保证CSV列的正确性,且未将文件大小转换为MB单位。以下是改进后的脚本,会生成包含相对路径和MB单位大小的标准CSV:

$srcpth = "C:\Users\vavenkatamanoj\Downloads"
$outputCsv = "C:\Users\vavenkatamanoj\Downloads\check.csv"

# 遍历文件并生成结构化数据
$fileData = Get-ChildItem -Path $srcpth -File -Recurse | ForEach-Object {
    # 计算相对路径,自动处理原路径末尾的反斜杠问题
    $relativePath = $_.FullName.Substring($srcpth.Length).TrimStart('\')
    # 将字节转换为MB,保留2位小数
    $sizeInMB = [math]::Round($_.Length / 1MB, 2)
    
    # 返回包含所需字段的自定义对象
    [PSCustomObject]@{
        RelativePath = $relativePath
        SizeMB       = $sizeInMB
        FullPath     = $_.FullName # 预存绝对路径,方便后续对比
    }
}

# 导出为标准CSV,自动生成表头,处理特殊字符
$fileData | Select-Object RelativePath, SizeMB | Export-Csv -Path $outputCsv -NoTypeInformation -Encoding UTF8

关键改进点:

  • 使用Export-Csv替代Out-File:自动生成CSV表头,正确处理路径中的逗号、空格等特殊字符,确保列分隔准确。
  • 可靠的相对路径计算:通过Substring+TrimStart('\'),无论原路径末尾是否带反斜杠,都能得到正确的相对路径。
  • 文件大小转换:用PowerShell内置的1MB常量将字节转换为MB,并用[math]::Round控制小数位数。

二、对比两个CSV并导出不匹配文件

假设需要对比的目标CSV路径为C:\Users\vavenkatamanoj\Downloads\compare.csv(需包含RelativePath列),以下脚本会找出生成的CSV中存在但对比CSV中不存在的文件,导出其绝对路径和大小:

$compareCsv = "C:\Users\vavenkatamanoj\Downloads\compare.csv"
$mismatchOutput = "C:\Users\vavenkatamanoj\Downloads\mismatch_files.csv"

# 导入两个CSV文件
$generatedFiles = Import-Csv -Path $outputCsv
$compareData = Import-Csv -Path $compareCsv

# 将对比CSV的路径存入哈希表,提升查找效率
$existingPaths = @{}
foreach ($item in $compareData) {
    $existingPaths[$item.RelativePath] = $true
}

# 筛选出不匹配的文件,提取绝对路径和大小
$mismatchedFiles = $fileData | Where-Object {
    -not $existingPaths.ContainsKey($_.RelativePath)
} | Select-Object FullPath, SizeMB

# 导出不匹配结果
$mismatchedFiles | Export-Csv -Path $mismatchOutput -NoTypeInformation -Encoding UTF8

说明:

  • 如果需要双向对比(即找出对比CSV中有但生成CSV中没有的文件),可以反向筛选一次后合并结果。
  • 如果对比CSV的路径列名不是RelativePath,需将脚本中的$item.RelativePath替换为对应列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:55:20