web-dev-qa-db-ja.com

特定の名前を持つすべてのサブフォルダーを削除するバッチコマンド

私はそのようなディレクトリを持っています:

D:\Movies
D:\Movies\MovieTitle1\backdrops\
D:\Movies\MovieTitle2\backdrops\
D:\Movies\MovieTitle3\backdrops\
D:\Movies\MovieTitle4\backdrops\

「背景」という名前のすべてのフォルダーをバッチファイルで削除するにはどうすればよいですか?可能であれば、D:\ドライブのみから再帰的に実行することをお勧めします。

31
Failstyle

短い答え:

FOR /d /r . %d IN (backdrops) DO @IF EXIST "%d" rd /s /q "%d"

Stack Overflowの同じ質問に対する無数の回答の1つから回答を得ました。

Windowsで再帰的に指定された名前のフォルダーを削除するコマンドラインツール?

このコマンドはテストされていませんが、この回答を投稿するのに十分なほどこのサイトを信頼しています。

Alex in a comment で示唆されているように、このバッチスクリプトは確実に機能するはずです。

D:
FOR /d /r . %d IN (backdrops) DO @IF EXIST "%d" rd /s /q "%d"
60
itd

上記の答えは私にとってはうまくいきませんでした。 @ itd solutionと @ Groo commentの組み合わせを使用する必要がありました。それらに称賛。

私にとっての最終的な解決策は次のとおりです(背景フォルダーの例を使用)。

FOR /d /r . %%d IN ("backdrops") DO @IF EXIST "%%d" rd /s /q "%%d"
8
JDC

コメントでは狭すぎるので、別の回答を開きます。別のフォルダとの間で実行したい場合、どうすればよいかを尋ねられ、非再帰的な削除の例を挙げたいと思います。

まず、cmdでコマンドを使用する場合は_%d_を使用する必要がありますが、.batで使用する場合は_%%d_を使用する必要があります。

ワイルドカードを使用して、たとえば「backdrops」で始まるフォルダーを処理できます:_"backdrops*"_。

再帰 .batが入っているフォルダーから始まるフォルダーの削除:

FOR /d /r . %d IN ("backdrops") DO @IF EXIST "%d" rd /s /q "%d"

Non-recursive .batがあるフォルダー内のフォルダーの削除(とにかく同じ名前のフォルダーを複数持つことはできないため、ワイルドカードで使用):

FOR /d %d IN ("backdrops*") DO @IF EXIST "%d" rd /s /q "%d"


再帰選択したフォルダーから始まるフォルダーの削除:

FOR /d /r "PATH_TO_FOLDER" %d IN ("backdrops") DO @IF EXIST "%d" rd /s /q "%d"

Non-recursive選択したフォルダー内のフォルダーの削除(とにかく同じ名前のフォルダーを複数持つことはできないため、ワイルドカードで使用):

FOR /d %d IN ("PATH_TO_FOLDER/backdrops*") DO @IF EXIST "%d" rd /s /q "%d"

1
user136036