Метод, скорее всего, будет зависеть от остальной части скрипта;но только для вопроса.
Вероятно, самый простой способ будет использовать where.exe
и find.exe
вместе:
Where .:*.txt 2>Nul|Find /C /V ""
Если вы хотите сохранить счет как значение значенияпеременная, вы можете использовать цикл For /F
, включающий либо where.exe
, либо команду Dir
.Обратите внимание, что в стандартном цикле For
, (For %%A In (*.txt)
) и при использовании команды Dir
, (Dir *.txt
) расширения файлов начинаются с.txt
возвращаются в отличие от .txt
, возвращаемых where.exe
.Чтобы учесть это, в моей версии Dir
я передал результаты через findstr.exe
, чтобы обеспечить подсчет только .txt
файлов:
Where
метод:
@Echo Off
Set "#=0"
For /F %%A In ('"Where .:*.txt 2>Nul|Find /C /V """')Do Set "#=%%A"
Echo(%#%
Pause
Dir
метод:
@Echo Off
Set "#=0"
For /F %%A In ('"Dir/B/A-D-L *.txt 2>Nul|FindStr/I "txt$"|Find /C /V """'
)Do Set "#=%%A"
Echo(%#%
Pause