0
我試圖將多個文件針對單個文件進行比較。我已經設法使那部分工作,但是我的問題是,我想能夠在比較運行之前檢查文件是否存在。PowerShell的 - 比較多個文件對單一的CSV文件
即檢查是否文件A存在,如果是這樣比較針對主csv文件,如果不繼續,並檢查文件b存在,如果是這樣比較針對主CSV等。
我的劇本至今老話:
$files = get-content -path "H:\Compare\File Location\servername Files.txt"
$prod = "H:\compare\Results\master_SystemInfo.csv"
foreach ($file in $files) {
If((Test-Path -path $file))
{
Write-Host "File exists, comparing against production"
$content1 = Get-Content "H:\Compare\Results\$file"
$content2 = Get-Content $prod
$comparedLines = Compare-Object $content1 $content2 -IncludeEqual |
Sort-Object { $_.InputObject.ReadCount }
$lineNumber = 0
$comparedLines | foreach {
$pattern = ".*"
if($_.SideIndicator -eq "==" -or $_.SideIndicator -eq "=>")
{
$lineNumber = $_.InputObject.ReadCount
}
if($_.InputObject -match $pattern)
{
if($_.SideIndicator -ne "==")
{
if($_.SideIndicator -eq "=>")
{
$lineOperation = "prod"
}
elseif($_.SideIndicator -eq "<=")
{
$lineOperation = "test"
}
[PSCustomObject] @{
Line = $lineNumber
File = $lineOperation
Text = $_.InputObject
}
}
}
} | Export-Csv "h:\compare\Comparison Reports\Prod.vs.$file" - NoTypeInformation
}
Else
{ "File does not exist, aborting" ; return}
}
的比較工作只需要運行比較,因爲它仍然是隨地吐痰結果不存在的文件之前添加的檢查文件。
非常感謝你,
看起來你已經檢查文件是否存在使用'試驗Path'。問題可能是您將'$ files'傳遞給'Test-Path'而不是'$ file'。 – ama1111
謝謝@ ama1111但現在腳本停止。我刪除了;從「Else」區域返回,但現在不進行比較? – dragonhsv
輸出是什麼?單個「文件不存在,正在中止」? – ama1111