Powershell - 删除包含具有特定FileDescription的文件的文件夹?
我使用下面的代码来获取文件的FileDescription:Powershell - 删除包含具有特定FileDescription的文件的文件夹?
(dir C:\test.exe).VersionInfo | select-object FileDescription | fl
这工作正常,接下来的步骤是:我期待搜索以特定FileDescription结尾的所有文件,然后删除这些文件所在的文件夹。这可能吗?谢谢!
我的管道发生错误。文件信息丢失,因为我们只管.VersionInfo
Get-ChildItem C:\test.exe | Where-Object{$_.VersionInfo.FileDescription -like "*endofdescription"} | Remove-Item -WhatIf
如果你使用-Recurse
返回多个文件,并继续使用Where-Object
,只过滤出你想要的那些它会更有意义。这应该找到这些文件并返回它们的文件夹名称。由于文件夹中可能有多个文件匹配,我们可以通过管道Select-Object -Unique
中的结果来获取单个文件夹。
Get-ChildItem C:\MyFolder -Recurse | Where-Object{$_.VersionInfo.FileDescription -like "*endofdescription"} | ForEach-Object{Split-Path $_.FullName -Parent} | Select-Object -Unique | ForEach-Object{Remove-Item $_ -WhatIf -Confirm:$false -Force -Recurse}
作为预防措施,我离开-WhatIf
。如果代码适合您的需求,请删除。
这可以工作,但会删除文件,而不是文件所在的文件夹。有没有办法解决这个问题?谢谢! – user2953714 2014-09-26 13:30:38
@ user2953714我已更新我的文章以获得基于文件夹的解决方案。 – Matt 2014-09-26 13:56:44
谢谢! Theres打开一个确认对话框,是否有办法抑制? – user2953714 2014-09-26 14:16:17
这是行不通的?
Get-ChildItem C:\MyFolder -Recurse | `
Where-Object{$_.VersionInfo.FileDescription -like "*endofdescription"} |`
%{$_.DirectoryName}|`
sort-object -unique| `
remove-item -recurse -whatif
'(dir C:\ test.exe).VersionInfo | Where-Object {$ _。FileDescription-like“* endofdescription”} |删除项目 - 什么如果。猜测会有某种ForEach-Object循环,输出来自Get-ChildItem调用 – Matt 2014-09-26 12:17:26
谢谢!删除项目部分出现问题,得到“删除项目:无法找到驱动器,名称为'文件'的驱动器不存在。” – user2953714 2014-09-26 12:30:27