Для задачи, которую вы объяснили, Dir /A
не относится к конкретному файлу, для этого вы бы исключили каталоги, используя Dir /A-D
.
Вы также хотели бы использовать пустой формат, то есть /B
чтобы исключить всю ненужную информацию верхнего и нижнего колонтитула.
Поскольку выходные данные не обязательно будут содержать даты с прямой косой чертой, (языковая / пользовательская переменная) , вы не можете фильтровать этот разделитель, поэтомувместо этого можно фильтровать не пустые строки, используя Find
с /V
и ""
:
Dir /B/A-D "C:\Backup\matech*.zip"|Find /C /V ""
Введите Dir /?
и Find /?
в командной строке для получения информации об использовании соответствующей команды.
Если вы хотите сохранить результат в переменной, вы все равно можете использовать цикл For
.
Из командной строки:
For /F %A In ('Dir /B/A-D "C:\Backup\matech*.zip" 2^>Nul^|Find /C /V ""') Do @Set "count=%A"
Из командного файла:
@For /F %%A In ('Dir /B/A-D "C:\Backup\matech*.zip" 2^>Nul^|Find /C /V ""') Do @Set "count=%%A"
Введите For /?
в командной строке для получения информации об использовании команды.
Альтернативный метод, который не требует ни формата /B
, ни использования Find
было бы так:
ИзКомандная строка:
For /F %A In ('Dir /A-D "C:\Backup\matech*.zip" 2^>Nul') Do @Set /A "count=_" >Nul 2>&1 & Set "_=%A"
Из командного файла:
@For /F %%A In ('Dir /A-D "C:\Backup\matech*.zip" 2^>Nul') Do @Set /A "count=_" >Nul 2>&1 & Set "_=%A"
Введите Set /?
в командной строке для получения информации об использовании команды.