如何使用powershell Compare对象比较最后两个修改的文件
我有一个powershell脚本,可以根据用户选择比较两个文件,但我希望在不询问用户输入的情况下比较最后两个修改的文件如何使用powershell Compare对象比较最后两个修改的文件,powershell,Powershell,我有一个powershell脚本,可以根据用户选择比较两个文件,但我希望在不询问用户输入的情况下比较最后两个修改的文件 Set-ExecutionPolicy Unrestricted -force cd\ cd .\script Write-Host " " Write-Host "Available Files " Write-Host "=================" Get-ChildItem | Format-table -Property Name -HideTable
Set-ExecutionPolicy Unrestricted -force
cd\
cd .\script
Write-Host " "
Write-Host "Available Files "
Write-Host "================="
Get-ChildItem | Format-table -Property Name -HideTableHeaders
$file = 'c:\script\mismatchfound.txt'
$ref = get-content (Read-Host "Enter Reference FileName")
$dif = get-content (Read-Host "Enter Difference FileName")
Compare-Object -ReferenceObject $ref -DifferenceObject $dif -CaseSensitive | Format-table InputObject, SideIndicator -Autosize | out-file $file -Width 200
您可以按如下方式执行此操作:
$FilePath = '.\path\to\your\files'
$File = 'c:\script\mismatchfound.txt'
$CompareFiles = Get-ChildItem $FilePath -File | Sort-Object LastWriteTime | Select-Object -Last 2
If ($Files.count -eq 2) {
$Ref = get-content $CompareFiles[0]
$Dif = get-content $CompareFiles[1]
Compare-Object -ReferenceObject $ref -DifferenceObject $dif -CaseSensitive | Format-table InputObject, SideIndicator -Autosize | out-file $file -Width 200
}
Else{
Write-Error '2 files not returned.'
}
这使用Get ChildItem
从在$FilePath
中指定的路径返回文件。然后,它使用Sort Object
按文件的LastWriteTime
属性对它们进行排序。然后,它使用Select Object
仅过滤该集合中返回的最后两个对象
然后,我们使用if
来验证是否有两个文件,如果有,则将它们放入$Ref
和$Dif
变量中,并根据您的代码使用比较对象
如果两个文件未返回,我们将返回一个错误。您可以使用write host而不是write error,这将在所有版本的powershell中工作
cd\
cd .\Scripts
$File = 'c:\script\mismatchfound.txt'
$CompareFiles = Get-ChildItem -File | Sort-Object LastWriteTime | Select-Object -Last 2
If ($Files.count -eq 2) {
$Ref = get-content ($CompareFiles[0])
$Dif = get-content ($CompareFiles[1])
Compare-Object -ReferenceObject $ref -DifferenceObject $dif -CaseSensitive | Format-table InputObject, SideIndicator -Autosize | out-file $file -Width 200
} Else {
Write-Host "File missing " -ForegroundColor White -BackgroundColor Red
}
感谢您的时间,上面的脚本显示错误,我想我们必须添加这个$Ref=get content($CompareFiles[0]),我编辑了您的答案并添加了相同的答案。这个很好,谢谢您的时间和答案。