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

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

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

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

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

9
задан 28.04.2011, 12:56

1 ответ

Можно использовать следующее в пакетном файле:

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

5
ответ дан 07.12.2019, 13:34

Теги

Похожие вопросы