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

PowerShell脚本优化:对比原始文件与最近两个自动生成CSV文件

优化后的PowerShell脚本实现多文件对比

需求说明

对比原始文件vdsinfo_original.csv与最近生成的两个按vdsinfo_yyMMdd_hh-mm-ss.csv格式命名的CSV文件,检测内容差异并输出到Changes.csv。

优化后的脚本

# 定义路径和输出文件
$outputFile = 'E:\TEMP\Changes.csv'
$reportsPath = 'E:\TEMP\reports'
$originalFile = Join-Path -Path $reportsPath -ChildPath 'vdsinfo_original.csv'

# 检查原始文件是否存在
if (-not (Test-Path -Path $originalFile)) {
    Write-Host "原始文件 $originalFile 不存在!" -ForegroundColor White -BackgroundColor Red
    exit
}

# 获取最近生成的两个符合命名规则的CSV文件(排除原始文件)
$recentFiles = Get-ChildItem -Path $reportsPath -Filter 'vdsinfo_*.csv' | 
    Where-Object { $_.Name -ne 'vdsinfo_original.csv' } | 
    Sort-Object LastWriteTime -Descending | 
    Select-Object -First 2

# 检查是否获取到至少两个文件
if ($recentFiles.Count -lt 2) {
    Write-Host "未找到足够的最近生成文件,当前仅找到 $($recentFiles.Count) 个符合要求的文件" -ForegroundColor White -BackgroundColor Red
    exit
}

# 初始化结果数组
$allChanges = @()

# 遍历最近的两个文件,分别与原始文件对比
foreach ($file in $recentFiles) {
    Write-Host "正在对比原始文件与 $($file.Name)..." -ForegroundColor Cyan
    
    # 读取文件内容(按行对比,若CSV有表头可改用Import-Csv按对象对比)
    $originalContent = Get-Content -Path $originalFile
    $currentContent = Get-Content -Path $file.FullName
    
    # 执行对比
    $diff = Compare-Object -ReferenceObject $originalContent -DifferenceObject $currentContent -CaseSensitive
    
    # 整理对比结果,添加文件名标识
    if ($diff) {
        $formattedDiff = $diff | Select-Object @{Name='对比文件'; Expression={$file.Name}}, InputObject, SideIndicator
        $allChanges += $formattedDiff
    } else {
        $allChanges += [PSCustomObject]@{
            '对比文件' = $file.Name
            'InputObject' = '无内容差异'
            'SideIndicator' = ''
        }
    }
}

# 将结果输出到CSV文件
$allChanges | Export-Csv -Path $outputFile -NoTypeInformation -Encoding UTF8
Write-Host "对比完成,结果已保存到 $outputFile" -ForegroundColor Green

脚本说明

  • 路径统一管理:集中定义所有路径,后续修改更便捷
  • 前置检查:先确认原始文件、目标文件的存在性,避免执行过程中报错
  • 精准筛选文件:通过文件名规则过滤+修改时间排序,准确获取最近生成的两个文件
  • 内容对比逻辑:
    • 默认按行对比,适合无复杂结构的CSV文件
    • 如果CSV是带表头的结构化数据,可将Get-Content替换为Import-Csv,实现按字段精准对比
  • 结果可视化:给每条对比结果添加对应文件名,清晰区分不同文件的差异
  • 标准输出:用Export-Csv生成结构化CSV结果,比Out-File更适合后续数据处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:49:52