2016-07-26 12 views
0

ハッシュをチェックして重複した画像を削除しようとしていますが、この素晴らしい1行のコードを使用していましたが、問題があります。Powershell:特殊文字を含むパイプファイル名がdelに失敗する

ls $folder\*.* -recurse | get-filehash | group -property hash | where { $_.count -gt 1 } | % { $_.group | select -skip 1 } | del 

等間隔アウトコード

ls $folder\*.* -recurse | 
get-filehash | 
group -property hash | 
where { $_.count -gt 1 } | 
% { $_.group | select -skip 1 } | 
del 

ファイル名は "[" や "]" の画像が削除されていないが含まれている場合。 Delを使って-LiteralPathを実行できますが、その後ろに文字列が必要で、パイプで作業する方法がわかりません。

+0

実際の問題を解決するかどうかは分かりませんが、パイプから '-LiteralPath'を使用するかどうかは不明です。 %{del -LiteralPath $ _。FullName} ' –

+0

いいえ取得できません。パラメータが 'LiteralPath'にバインドできません。 –

答えて

0

Get-FileHashとGroup-Objectを通過したことを忘れていました。これを試してみてください:

ls $folder\*.* -recurse | 
get-filehash | 
group -property hash | 
where { $_.count -gt 1 } | 
% { $_.group | 
    select -skip 1 | 
    % { 
     del -LiteralPath $_.Path 
    } 
} 

それが続けファイルとそれが削除されたファイルが、技術的にはこれは動作するはずおよそかなり任意になるだろうので、これは少し奇妙です。