特定の式に一致するすべてのディレクトリを削除するWindowsコマンドプロンプトのバッチファイルを作成しています。
私は最初にDIR
を使用して、式に一致するディレクトリのプレーンリストを返します。次のように、出力の各行をRMDIRコマンドにパイプします。
DIR *.delete /A:D /B /S | RMDIR /S /Q
ただし、上記のコマンドは機能していないようです。なぜこれがうまくいかないのか完全には理解しておらず、説明を提供してくれる人に感謝します。
バッチファイルでは、次のものを使用できます。
FOR /f "tokens=*" %%a in ('dir *.delete /A:D /B /S') DO RMDIR /S /Q %%a
これは、FOR
コマンドを使用して、指定されたコマンド(この場合はdir *.delete /A:D /B /S
)の出力をループし、返されたアイテムごとに、DOステートメントRMDIR /S /Q
で指定されたコマンドを実行します。アイテムが参照されます。変数%%a
によって。
DIR
出力をRMDIR
に単純にパイプするだけでは機能しない理由は、出力全体(複数行)を単一のパラメーターとしてRMDIR
に一度に送信するためです。 FOR
コマンドは、この出力を分解し、各項目を反復処理してから、それを1つずつRMDIR
に送信します。