MD5ハッシュに基づいて比較する比較スクリプトがあります。それは奇妙なことをしていることに気づいた。ディレクトリとサブディレクトリを比較し、MD5ハッシュに基づいてファイルを置き換えます。
$Source= "D:\Folder1"
$Destination = "D:\folder2"
get-childitem $Source -Recurse | foreach {
#Calculate hash using Algorithm MD5 reference http://www.tomsitpro.com/articles/powershell-file-hash-check,2-880.html
Write-Host "Copying $($_.fullname) to $Destination" -ForegroundColor Yellow
$OriginalHash = Get-FileHash -Path $_.FullName -Algorithm MD5
#Now copy what's different
$replacedfile = $_ | Copy-Item -Destination $Destination -Force -PassThru
#Check the hash sum of the file copied
$copyHash = Get-FileHash -Path $replacedfile.FullName -Algorithm MD5
#compare them up
if ($OriginalHash.hash -ne $copyHash.hash) {
Write-Warning "$($_.Fullname) and $($replacedfile.fullname) Files don't match!"
}
else {
Write-Host "$($_.Fullname) and $($replacedfile.fullname) Files Match" -ForegroundColor Green
}
} #Win!
サブフォルダに違いがあるまで、スクリプトは正常に動作します。それで何らかの理由で私が見つけられないように見えますが、それはトップレベルとサブレベルの両方に別のアイテムをコピーします.....私は本当にダムになっていますし、問題を見ることができず、目の
例
File Test.Txt is in Source\SubFolder
スクリプトの任意のアイデアを実行し、デスティネーション\サブフォルダと目的地であるtest.txtを置く.....
?
サブディレクトリ差分ツールを書き換えしようとしているのはなぜ?すでに存在するものだけを使用してください。 –
明らかにそうする必要がある、または私はこれをやっていないでしょう。私は問題に無関係であるので詳細には進まない。私の言葉を借りて、私はそれをこのようにする必要があります。 –
'Copy-Item'コマンドで' -Recurse'を有効にしていませんか?私があなたの出力を再現できる唯一の方法は、ファイルを再帰的にコピーしたときでした。 – FoxDeploy