2016-07-26 2 views
0

해시를 검사하여 중복 이미지를 삭제하려고하는데이 훌륭한 한 줄의 코드를 사용할 수 있지만 문제가 있습니다. 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

아니요 그냥 가져옵니다. 매개 변수 'null'이므로 '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 
    } 
} 

이 조금 이상하지만, 기술적으로이 작업을해야합니다 :이보십시오.

관련 문제