尝试使用Windows PowerShell删除包含具有特定内容的XML文件的所有目录。尽可能用
列出所有包含正确模式的文件ls -r -Filter *.xml | ?{ $_ | Select-String -Pattern "ACC_cont"}
但是无法从输出中获取路径并删除目录及其所有内容。可能存在多个带有正确模式的XML文件的目录,我想将它们全部删除。
答案 0 :(得分:0)
尝试以下操作:
Get-ChildItem -Recurse -Filter *.xml |
Select-String -List -Pattern "ACC_cont" |
Remove-Item -Recurse -LiteralPath { Split-Path -Parent $_.Path } -WhatIf
-WhatIf
预览操作;删除它以执行实际删除。
Select-String
直接接受Get-ChildItem
从管道输出的文件信息对象。
-List
使Select-String
在文件中的第一次匹配之后停止,从而提高了效率。 Select-String
输出的match-info对象具有.Path
属性,其中包含输入文件路径,因此Split-Path -Parent $_.Path
获得匹配文件的目录路径。
将脚本块(Split-Path -Parent $_.Path
中的{ ... }
传递到Remove-Item
的{{1}}参数是提供参数值的延迟绑定脚本块的实例从每个输入对象动态派生的,因此-LiteralPath
删除找到匹配XML文件的每个目录。