WindowsでファイルのリストをRMDIRにパイプすることは可能ですか?


9

特定の式に一致するすべてのディレクトリを削除するために、Windowsコマンドプロンプト用のバッチファイルを作成しています。

最初にDIR、式に一致するディレクトリの単純なリストを返すために使用しています。次のように、出力の各行をRMDIRコマンドにパイプで渡します。

DIR *.delete /A:D /B /S | RMDIR /S /Q

ただし、上記のコマンドは機能しないようです。これがなぜ機能しないのか完全には理解しておらず、説明を提供できる人には感謝しています。

回答:


5

バッチファイルで次を使用できます。

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は、出力全体(複数行)を単一のパラメーターとして一度に送信するためですRMDIRFORコマンドこの出力ダウン休憩、各項目を反復処理し、その後にそれを送り、RMDIR一つずつ。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.