Powershell:带有特殊字符的管道文件名del失败

时间:2016-07-26 13:21:43

标签: powershell pipe special-characters

我正在尝试通过检查哈希来删除重复的图像,我发现这个代码很好用,但我遇到了问题。

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,但是它之后需要一个字符串,我不知道如何使用管道。

1 个答案:

答案 0 :(得分:0)

我忘了它是通过Get-FileHash和Group-Object传递的。试试这个:

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

这有点奇怪,因为它保留哪个文件以及删除哪个文件会相当随意,但从技术上讲这应该可行。