В FINDSTR нет ничего, чтобы делать то, что вы хотите напрямую, но это легко сделать с циклом FOR в сочетании с подстрокой расширения и арифметикой SET.
Следующий код (без FINDSTR) может быть хорошимдостаточно, в зависимости от того, какие другие файлы могут существовать в каталоге (не проверено, но должно работать, если я не позволю глупой ошибке проскользнуть).Код работает путем создания переменной count с именем на основе даты в имени файла.
@echo off
setlocal enableDelayedExpansion
for %%F in (M*_??_??_????.pdf) do (
set "fname=%%~nF"
set /a fileDate_!fname:~-10!+=1
)
set fileDate_
Если вы хотите более точно искать действительные даты в последних 10 символах имени, то выможет передать вывод DIR в регулярное выражение FINDSTR.(снова не проверено)
@echo off
setlocal enableDelayedExpansion
for /f %%F in ('dir /b M*_??_??_????.pdf ^| findstr /lixc:"M[0-9]*_[01][0-9]_[0-3][0-9]_[0-9][0-9][0-9][0-9]') do (
set "fname=%%~nF"
set /a fileDate_!fname:~-10!+=1
)
set fileDate_
Регулярное выражение не ограничивается точными датами, но, скорее всего, оно адекватно.Вы можете быть более точным, используя несколько строк поиска регулярных выражений, но жесткие ограничения FINDSTR усложнят его, чем это должно быть (см. Каковы недокументированные функции и ограничения команды Windows FINDSTR? )