web-dev-qa-db-ja.com

PowerShellで特定の名前のフォルダーを再帰的に削除するにはどうすればよいですか?

これにより、複数のフォルダー内の特定の拡張子を持つファイルを削除できます。

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

ただし、特定の名前のフォルダー、特にSubversionリポジトリからファイルをプルダウンするときにSubversionが作成するフォルダー( ".svn"または "_svn")も削除する必要があります。

26
Tone

これ one それを行う必要があります:

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
    }       
}
45

-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
6
Keith Hill

再帰的に削除するには特定の名前のフォルダ-Filter-Includeよりも大幅に高速です。

したがって、可視性のために、@ Keithの回答のより高速なバージョンを次に示します。

完全に入力済み:

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

短縮版:

ls . -filter .svn -r -fo | ri -r -fo
0
Ludwig Schmidt