for /f "eol=: delims=" %%F in ('dir /b * ^| findstr /vbi abc') do (
REM your commands processing file %%F here
)
eol=:
, вероятно, не является необходимым.Я включил его, потому что вы не хотите исключать любые файлы, начинающиеся с символа EOL, который по умолчанию равен ;
, и имя файла может начинаться с ;
.Ни один файл не может начинаться с :
, так что это безопасно для EOL.
Я решил использовать FOR / F, потому что он кэширует весь список файлов до того, как цикл выполнит какую-либо команду, и вы сможете делать что угодно.к этим файлам, включая их переименование.
Если вы используете простой цикл FOR, то возможно, что переименованный файл будет обработан дважды (или больше!), потому что FOR может начать обработку файлов, прежде чем он завершит обнаружение.их.Новое имя переименованного файла может появиться позже в списке и подвергнуться повторной обработке.