Как подразумевается в моем комментарии, и предполагается, что четыре символа, а не четыре буквенных символа:
@For /R "%__AppDir__%" %%A In (*)Do @(Set "FN=%%~nA"
SetLocal EnableDelayedExpansion
If Not "%%~nA"=="!FN:~,3!" If "%%~nA"=="!FN:~,4!" Echo %%~nA
EndLocal)
И вот возможная альтернатива для четырех буквенных символов. Запустите его как администратор, если вы действительно пытаетесь проанализировать все файлы внутри \Windows\System32\
, (необязательно, но может забрать больше файлов) :
@Dir /B/S/A-D "%__AppDir__%" 2>NUL|"%__AppDir__%findstr.exe" "\\[a-Z][a-Z][a-Z][a-Z]\.[^\.]*$ \\[a-Z][a-Z][a-Z][a-Z]$"
Вы можете поместитьчто внутри for-loop , если по какой-то необъяснимой причине вам нужны только базовые имена:
@For /F "EOL=?Tokens=*" %%A In ('Dir /B/S/A-D "%__AppDir__%" 2^>NUL^|"%__AppDir__%findstr.exe" "\\[a-Z][a-Z][a-Z][a-Z]\.[^\.]*$ \\[a-Z][a-Z][a-Z][a-Z]$"')Do @Echo(%%~nA