如果文件匹配,则递归删除DIR? (电源外壳)

时间:2009-09-23 23:05:32

标签: powershell directory

我想知道如果目录中有指定的文件,是否有人知道如何删除目录?例如,如果有这个目录:

PS C:\Users\mike> dir


Directory: C:\Users\mike


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         9/17/2009   6:26 PM       6615 pic001.jpg
-a---         9/19/2009   9:58 AM       7527 notes.txt
-a---         8/31/2009   5:03 PM      10506 Project.xlsx

我想删除。\ mike如果它有一个jpg文件,以及任何其他有.jpg文件的目录。如果目录没有指定文件,则不应删除它。

到目前为止,我所拥有的是:

get-childitem "C:\Users\mike" -include *.jpg -recurse | Where-Object { $_.mode -like 'd*' } | remove-item

1 个答案:

答案 0 :(得分:4)

当你使用带有* .jpg的Get-ChildItem时,你只会得到文件 - 除非你有一个名为{something} .jpg的目录。顺便说一下,我会使用-filter并远离-include参数。 Thar是龙 - 请参阅该参数的文档。

这应该适合你:

Get-ChildItem 'C:\Users\Mike' *.jpg -r | Foreach {$_.Directory} | 
    Remove-Item -Recurse -Verbose -WhatIf

如果使用别名输入缩短为:

gci 'C:\Users\Mike' *.jpg -r | %{$_.Directory} | ri -r -v -wh

如果您对结果感到满意,请删除-WhatIf以使其真正删除目标。