Можно ли передать список файлов в RMDIR в Windows?

9

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

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

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

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

user78755
источник

Ответы:

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

багор
источник