Пакетный скрипт для удаления файлов на основе регулярного выражения findstr

Я пытаюсь удалить некоторые файлы с помощью пакетного сценария на основе регулярного выражения. Что у меня есть:

FOR /f "tokens=*" %%a in ('dir /b | findstr MY_REGEX_HERE') DO ECHO %%a 

Я знаю, что моя внутренняя команда работает сама по себе, давая мне список каталогов, но когда я встраиваю ее в цикл for, как это, я получаю ошибку | was unexpected at this time. Разрешен ли трубопровод внутри команд цикла FOR? Или мне нужно уйти от этого или что-то?

Любая помощь в том, как я могу это сделать, была бы великолепна.

2 ответа

Решение
FOR /f "tokens=*" %%a in ('dir /b ^| findstr MY_REGEX_HERE') DO ECHO %%a 

Избежать | используя ^ перед этим.

Процессор CMD слишком ограничен, чтобы делать то, что вы хотите, труба в этом контексте недопустима. Вы можете помешать ему, заменив заглушку ECHO CALL на другой командный файл, но даже тогда у вас все равно будут проблемы. См. "Пакетное перемещение всех файлов из каталогов в родительский каталог и удаление подкаталога" для быстрого сравнения параметров сценариев.

Другие вопросы по тегам