以下脚本查看两个位置上应该重复的文件。我编写了部分脚本来检查文件大小 (.length) 是否匹配。但是,虽然一个文件报告了正确的大小,但另一个文件却没有。您能说明这是为什么吗,以及我如何正确测量文件大小。
脚本
get-childitem -file -recurse | ForEach-Object {
$comparisonFile=($_.FullName -replace 'Q:\\Backup Comparison\\E','V:\Q Dup Check Needed\E')
$comparisonFileSize=$comparisonFile.Length
Write-Host $_.FullName
Write-Host $comparisonFile
test-path $comparisonFile
Write-Host $_.Length
Write-Host $comparisonFileSize
Write-Host ""
sleep .1
}
输出
Q:\Backup Comparison\E\EXCLUDE - FOUND\F(OUND) 01\found.000\dir0000.chk\._Vine_Street_ReportFinancialDetail_11_Q4.pdf
V:\Q Dup Check Needed\E\EXCLUDE - FOUND\F(OUND) 01\found.000\dir0000.chk\._Vine_Street_ReportFinancialDetail_11_Q4.pdf
True
4096
118
Windows 报告的文件大小
答案1
$comparisonFile
仅包含其他文件的路径,而不包含实际的文件对象。请尝试以下方法:
$comparisonFile = Get-Item ($_.FullName -replace 'Q:\\Backup Comparison\\E','V:\Q Dup Check Needed\E')
$comparisonFile.length
根据您需要的准确程度,我建议比较文件哈希值而不仅仅是长度,例如Get-FileHash $comparisonFile -Algorithm "SHA256"
。这是一个更完整的例子:在 Powershell 中比较 Filehash