Я пишу пакетный файл для командной строки Windows для удаления всех каталогов, соответствующих определенному выражению.
Я сначала использую DIR
возвратить простой список каталогов, соответствующих выражению. Я хотел бы передать каждую строку по каналу вывода в команду RMDIR, как это:
DIR *.delete /A:D /B /S | RMDIR /S /Q
Однако вышеупомянутая команда, кажется, не работает. Я не полностью понимаю, почему это не работает и было бы благодарно любому, кто может предложить объяснение.
Можно использовать следующее в пакетном файле:
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
один за другим.