Có thể chuyển danh sách các tệp sang RMDIR trên Windows không?


9

Tôi đang viết một tệp bó cho dấu nhắc lệnh Windows để xóa tất cả các thư mục khớp với một biểu thức nhất định.

Tôi lần đầu tiên sử dụng DIRđể trả về một danh sách đơn giản các thư mục khớp với biểu thức. Tôi muốn chuyển từng dòng đầu ra vào lệnh RMDIR, như thế này:

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

Tuy nhiên, lệnh trên dường như không hoạt động. Tôi hoàn toàn không hiểu tại sao điều này không hiệu quả và sẽ biết ơn bất cứ ai có thể đưa ra lời giải thích.

Câu trả lời:


5

Bạn có thể sử dụng các mục sau trong tệp bó của mình:

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

Điều này sử dụng FORlệnh để lặp qua đầu ra của một lệnh đã cho (trong trường hợp này dir *.delete /A:D /B /Svà với mỗi mục được trả về, nó sẽ chạy lệnh được chỉ định bằng câu lệnh DO RMDIR /S /Q. Mục này được tham chiếu bởi biến %%a.

Lý do nó không hoạt động đơn giản là dẫn DIRđầu ra vào RMDIRlà vì bạn đang gửi toàn bộ đầu ra (nhiều dòng) cùng một lúc như một tham số RMDIR. Các FORvi phạm lệnh xuống đầu ra này, lặp qua từng mục và sau đó gửi đến RMDIRtừng người một.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.