Apakah mungkin untuk mem-pipe daftar file ke RMDIR di Windows?

9

Saya menulis file batch untuk prompt perintah Windows untuk menghapus semua direktori yang cocok dengan ekspresi tertentu.

Saya pertama kali menggunakan DIRuntuk mengembalikan daftar direktori yang cocok dengan ekspresi. Saya ingin menyalurkan setiap baris output ke perintah RMDIR, seperti ini:

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

Namun perintah di atas sepertinya tidak berfungsi. Saya tidak sepenuhnya mengerti mengapa ini tidak berhasil dan akan berterima kasih kepada siapa saja yang dapat memberikan penjelasan.

pengguna78755
sumber

Jawaban:

5

Anda dapat menggunakan yang berikut ini di file batch Anda:

FOR /f "tokens=*" %%a in ('dir *.delete /A:D /B /S') DO RMDIR /S /Q %%a

Ini menggunakan FORperintah untuk mengulang melalui output dari perintah yang diberikan (dalam kasus ini dir *.delete /A:D /B /S, dan untuk setiap item yang dikembalikan itu akan menjalankan perintah yang ditentukan dengan pernyataan DO RMDIR /S /Q,. Item tersebut disebut oleh variabel %%a.

Alasannya tidak bekerja hanya dengan menyalurkan DIRoutput ke RMDIRkarena Anda mengirim seluruh output (beberapa baris) sekaligus sebagai parameter tunggal RMDIR. The FORperintah memecah output ini, iterates melalui setiap item dan kemudian mengirimkan ke RMDIRsatu per satu.

Taji
sumber