Есть ли в пакетном файле Windows 10 способ извлечь только последнее общее количество файлов?

avatar
CoastalGuy
8 августа 2021 в 19:09
32
2
-1

Из команды dir, которая отображает количество вложенных папок в основной папке, я пытаюсь извлечь только общее количество файлов. Я пытаюсь использовать команду FIND со строкой «Файл (ы)», однако в ней перечислены все общие файлы для каждой из подпапок в дополнение к общему итогу в последней строке. Я хотел бы ограничить извлечение только этой общей суммой, и ни один из файлов подпапок не учитывается.

Источник
Stephan
8 августа 2021 в 19:39
1

dir /s /b /ad * |find /c /v ""

Compo
8 августа 2021 в 21:13
0

%SystemRoot%\System32\xcopy.exe "MainFolder\*" "Null" /G/H/I/L/Q/R/S

Ответы (2)

avatar
CoastalGuy
9 августа 2021 в 23:06
0

Нашел простой результат поиска в Интернете: После выполнения каталога /s основной папки, а затем экспорта файла (Files.txt) каждого из файлов с использованием FIND «Файл (ы)», следующая команда извлекает только последнюю строку этого файла, которая имеет общее количество файлов из всех подпапок.....

Для /F "UseBackQ Delims==" %%A In ("Files.txt") Установить "lastline=%%A" Эхо – %lastline%

Отлично работает, Спасибо,

avatar
Compo
8 августа 2021 в 23:01
0

Хотя я уже предоставил один простой вкладыш в разделе комментариев, технически он не обеспечивает метод выполнения того, что вы хотели. Задача, которую вы объяснили, на самом деле состоит в том, чтобы получить подстроку предпоследней строки вывода команды DIR с ее опцией /S. Этот метод предотвращает необходимость использования команды FIND для поиска зависящей от языка строки File(s).

.
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion

Set "MainFolder=C:\Users\CoastalGuy\Documents"
Set "CommandLine=Dir "%MainFolder%" /S /A:-D"

Set "Last="
Set "LastButOne="
For /F Delims^=^ EOL^= %%G In (
    '%CommandLine% 2^>NUL'
) Do (
    If Defined Last (
        SetLocal EnableDelayedExpansion
        For /F "Tokens=1 Delims= " %%H In ("!Last!") Do (
            EndLocal
            Set "LastButOne=%%H"
        )
    )
    Set "Last=%%G"
)
If Defined LastButOne (
    Echo %LastButOne%
    Pause
)

Для конкретной задачи, которую вы разместили, этот сценарий немного избыточен, но я попытался создать его больше похожим на шаблон, чтобы вам было легче адаптировать его для подобных задач, ( изменив значения переменных в строках 4 и 5 и изменив значения Tokens и Delims во внутреннем цикле For /F по мере необходимости).