我想编写一个脚本,该脚本将删除重复的文件并保留一个副本,该文件的任何父目录都称为“最终”
换句话说,如果没有相同文件(具有相同散列的文件)的父目录没有被称为“最终”,则不要删除
更新
这就是我要的,不确定从这里怎么走
ls *.* -recurse | get-filehash | group -property hash | where { $_.count -gt 1 } | % { $_.group } | select {$_.Path}
我需要过滤掉包含目录“ Final”的$ _。Path尝试where { $_.Directory -contains "Final"}
但不起作用
看来您刚刚复制了对此问题的最高评价,但并未考虑或尝试解决该问题。
到目前为止,您只是循环浏览所有文件,并两次删除具有相同哈希值的任何内容。
您需要为包含“最终”的完整路径添加另一项检查。让我知道您对以下代码的看法。我还没有完全测试它,但是...
Get-ChildItem -Path c:\Path\Here |
Where-Object { $_.FullName -NotLike "*Final"} |
Get-FileHash |
Group-Object -Property Hash |
Where-Object { $_.Count -gt 1} |
Foreach-Object { $_.Group | Select-Object -Skip 1 } |
Remove-Item
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句