Альтернативный способ отображения количества файлов в папке Windows. - PullRequest
0 голосов
/ 13 сентября 2018

У меня большая проблема.Я должен написать скрипт, который позволяет мне получать только количество файлов, которые соответствуют правилам такого типа "matech * .zip" в папке Backup.Я пытаюсь выполнить следующий код:

@echo off
set "count = dir /a "C:\Backup\matech*.zip" | find /C "/""

, но я получил эту ошибку: /a was unexpected at this time

Есть ли кто-нибудь, кто может мне помочь?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Для задачи, которую вы объяснили, 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 /? в командной строке для получения информации об использовании команды.

0 голосов
/ 13 сентября 2018

используйте цикл for и установите переменную, используя результат команды:

В пакетном файле:

@echo off
for /f %%i in ('dir /b /a-d "C:\Backup\matech*.zip" ^| find /C "/"') do set count=%%i
echo %count%

и из cmdline:

for /f %i in ('dir /b /a-d "C:\Backup\matech*.zip" ^| find /C "/"') do set count=%i && echo %count%

для получения справки по циклу for, выполните команду for /? из cmdline.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...