8

Я пишу командный файл для командной строки Windows, чтобы удалить все каталоги, соответствующие определенному выражению.

Сначала я использую DIR для возврата простого списка каталогов, соответствующих выражению. Я хотел бы передать каждую строку вывода в команду RMDIR, например так:

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

Однако приведенная выше команда не работает. Я не до конца понимаю, почему это не работает, и был бы благодарен всем, кто может дать объяснение.

1 ответ1

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 один за другим.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .