Попробуйте использовать канал к findStr
в команде for
, чтобы исключить любые нежелательные шаблоны файлов из файла FolderList
при type
его загрузке.
Пример:
for /F "delims=" %%a in ('type "%FolderList%" ^| findStr /I /V /R /C:"^[01234567890]*\.[0123456789][0123456789][0123456789]$"') do (
...
)
Вы можете выполнить findStr /?
в командном окне cmd.exe, чтобы прочитать документацию о синтаксисе и регулярных выражениях.
По существу /I
для «игнорирования регистра», /V
для «исключения / пропуска совпадений» и /R
означает «использование анализа регулярного выражения».
Символ канала должен быть экранирован внутри оператора for, для которого используется курсор (^|
).
Этот RegEx должен соответствовать нежелательным шаблонам файлов:
"^[01234567890]*\.[0123456789][0123456789][0123456789]$"
При этом я предположил, что ваши имена файлов состоит только из цифр, которые можно обозначить как класс символов в скобках [0123456789]*
, а звездочка означает «допускается повторение от нуля или более раз».
Точка должна быть экранирована \.
, поскольку в регулярном выражении точка расшифровывается как «любой отдельный символ» (.*
, следовательно, является «последовательностью любого количества символов, от нуля или более»).
Группа из трех классов после точки означает «три вхождения цифр 0-9», соответствовать расширению файла. Символ каретки ^
в начале RegEx означает «от начала строки», а доллар $
обозначает «конец строки» (то есть пробелы после последнего di git не допускаются для пример).
Можно немного сократить RegEx, используя [0-9]
или [a-z]
для строчных букв и [A-Z]
соответственно, вместо явного перечисления разрешенных символов / цифр в классе. Это может быть трудно отследить побочные эффекты, поэтому обычно я всегда перечисляю все разрешенные символы в явном виде.
Редактировать: Я пропустил ту часть, что вы хотите скопировать только первые два шаблона файла. В этом случае вы можете опустить /V
и искать файлы с 2 точками, например: "[01234567890]*\.[0123456789]*\.[0123456789]*"
, который принимает любое количество цифр, разделенных двумя точками.
Ваш подход к сопоставлению по длине имени файла + расширение должно работать одинаково хорошо. Если вы хотите, чтобы минимальное или фиксированное количество символов было разрешено, используйте точку в качестве заполнителя ровно для одного символа (di git или символ). (Как видно из комментариев ниже)