PowerShell:报告错误的文件长度

PowerShell:报告错误的文件长度

以下脚本查看两个位置上应该重复的文件。我编写了部分脚本来检查文件大小 (.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

相关内容