パスのすべてのファイルのハッシュを(再帰的に)識別するスクリプトを実行しています。これは大丈夫です。powershellでハッシュを比較して同じハッシュのファイルを削除しようとしています
ハッシュが同じであることを特定した後、それらを配列に保存したいので、同じハッシュを持つこれらのファイルを削除できます。重複ファイル。そして、私は午後と夕方になってそれをどうやって行うのか考えようとしています。現時点では マイコード:
Write-Host "Write a path: "
$UserInput=Read-Host
Get-ChildItem -Path $UserInput -Recurse
#Get-FileHash cmdlet to get the hashes
$files = Get-ChildItem -Path $UserInput -Recurse | where { !$_.PSIsContainer }
$files | % {(Get-FileHash -Path $_.FullName -Algorithm MD5)}
#Creating an array for all the values and an array for the duplicates
[email protected]()
[email protected]()
#grouping the hashes that are duplicated cmdlet Group-Object:
$Duplicates = Get-ChildItem -Path $UserInput -Recurse -File |Group {($_|Get-FileHash).Hash} |Where Count -gt 1
foreach($FileGroup in $Duplicates)
{
Write-Host "These files share hash : $($FileGroup.Name)"
$FileGroup.Group.FullName |Write-Host
$copies+=$Duplicates
}
だから、最後の部分「$コピー+ = $重複が」正常に動作しません。
私は最初のファイルを「元の」配列に保存することを考えていました。 2番目のハッシュが同じハッシュの場合は、2番目を「コピー」配列に保存します。しかし、私はハッシュを取得するときに私はスクリプトの第1部でそれを行うことができますか分からない。
その後、2番目の配列は重複しているので、コンピュータから削除するのは簡単です。
したがって、実際には重複を削除することができます。なぜなら、ハッシュと重複を「オブジェクト」として使用しているからです。私の場合は、検索を再帰的に行います(すべてのファイルとディレクトリのファイルなどを取得します)。私はそれを試してみましたが、それは再帰的なことではありませんので、再帰的な部分を追加するだけかもしれません。 私も "最初のものを除いてすべての重複を削除"しようとしましたが、実際のファイルは削除されません! また、「複製」は配列です、そうですか? –
はい、 'Recurse'パラメータが必要です。私はそれを使わずにテストしていましたが、追加するのを忘れてしまいました。コードを実行するとエラーメッセージが表示されますか? – Bluecakes
これはファイルを削除したと言われていますが、ディレクトリに移動してファイルが削除されたかどうかを調べるときに、メッセージ彼らはされているが、彼らはそうではないことが飛び出す。 –