Как я могу рекурсивно удалить папку с определенным именем с помощью PowerShell? - PullRequest
22 голосов
/ 06 сентября 2010

Я могу удалить файлы с определенными расширениями в нескольких папках следующим образом:

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

Но мне также нужно удалить папки с определенным именем - в частности, те, которые создает Subversion (".svn" или "_svn ") при извлечении файлов из репозитория Subversion.

Ответы [ 2 ]

42 голосов
/ 06 сентября 2010

Это один должно сделать это:

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

Другое версия:

$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
    }       
}
5 голосов
/ 06 сентября 2010

Я стараюсь избегать параметра -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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...