Чи можливо передавати список файлів у RMDIR в Windows?


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полягає в тому, що ви надсилаєте весь вихід (кілька рядків) відразу як один параметр RMDIR. У FORкоманді зламається цим виходом, перебирає кожен елемент , а потім посилає його в RMDIRодин за іншим.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.