如何使用PowerShell以递归方式删除具有特定名称的文件夹?

时间:2010-09-05 22:49:38

标签: powershell recursion windows-7 directory

我可以删除多个文件夹中具有特定扩展名的文件:

Get-childitem * -include *.scc -recurse | remove-item

但我还需要删除具有特定名称的文件夹 - 特别是当你从subversion repo中下载文件时subversion创建的文件夹(“.svn”或“_svn”)。

3 个答案:

答案 0 :(得分:41)

这个one应该这样做:

get-childitem -Include .svn -Recurse -force | Remove-Item -Force –Recurse

Other版本:

$fso = New-Object -com "Scripting.FileSystemObject"
$folder = $fso.GetFolder("C:\Test\")

foreach ($subfolder in $folder.SubFolders)
{
    If ($subfolder.Name -like "*.svn")
    {
        remove-item $subfolder.Path -Verbose
    }       
}

答案 1 :(得分:5)

我倾向于避免-Include上的Get-ChildItem参数,因为它比-Filter慢。但是在这种情况下(因为它不能表示为-Filter),这就是我要使用的:

Get-ChildItem . -Include .svn,_svn -Recurse -Force | Remove-Item -Recurse -Force

或者在提示符下输入:

ls . -inc .svn,_svn -r -fo | ri -r -fo

答案 2 :(得分:1)

要递归删除具有特定名称的文件夹-Filter的速度明显快于-Include

因此,为了提高知名度,这是@Keith答案的更快版本:

完全输入:

Get-ChildItem -Filter .svn -Recurse -Force | Remove-Item -Recurse -Force

简短版本:

ls . -filter .svn -r -fo | ri -r -fo