Powershell - 删除包含具有特定FileDescription的文件的文件夹?

问题描述:

我使用下面的代码来获取文件的FileDescription:Powershell - 删除包含具有特定FileDescription的文件的文件夹?

(dir C:\test.exe).VersionInfo | select-object FileDescription | fl 

这工作正常,接下来的步骤是:我期待搜索以特定FileDescription结尾的所有文件,然后删除这些文件所在的文件夹。这可能吗?谢谢!

+2

'(dir C:\ test.exe).VersionInfo | Where-Object {$ _。FileDescription-like“* endofdescription”} |删除项目 - 什么如果。猜测会有某种ForEach-Object循环,输出来自Get-ChildItem调用 – Matt 2014-09-26 12:17:26

+0

谢谢!删除项目部分出现问题,得到“删除项目:无法找到驱动器,名称为'文件'的驱动器不存在。” – user2953714 2014-09-26 12:30:27

我的管道发生错误。文件信息丢失,因为我们只管.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。如果代码适合您的需求,请删除。

+0

这可以工作,但会删除文件,而不是文件所在的文件夹。有没有办法解决这个问题?谢谢! – user2953714 2014-09-26 13:30:38

+0

@ user2953714我已更新我的文章以获得基于文件夹的解决方案。 – Matt 2014-09-26 13:56:44

+0

谢谢! 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