Из команды dir, которая отображает количество вложенных папок в основной папке, я пытаюсь извлечь только общее количество файлов. Я пытаюсь использовать команду FIND со строкой «Файл (ы)», однако в ней перечислены все общие файлы для каждой из подпапок в дополнение к общему итогу в последней строке. Я хотел бы ограничить извлечение только этой общей суммой, и ни один из файлов подпапок не учитывается.
Есть ли в пакетном файле Windows 10 способ извлечь только последнее общее количество файлов?
Ответы (2)
Нашел простой результат поиска в Интернете: После выполнения каталога /s основной папки, а затем экспорта файла (Files.txt) каждого из файлов с использованием FIND «Файл (ы)», следующая команда извлекает только последнюю строку этого файла, которая имеет общее количество файлов из всех подпапок.....
Для /F "UseBackQ Delims==" %%A In ("Files.txt") Установить "lastline=%%A" Эхо – %lastline%
Отлично работает, Спасибо,
Хотя я уже предоставил один простой вкладыш в разделе комментариев, технически он не обеспечивает метод выполнения того, что вы хотели. Задача, которую вы объяснили, на самом деле состоит в том, чтобы получить подстроку предпоследней строки вывода команды 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
по мере необходимости).
dir /s /b /ad * |find /c /v ""
%SystemRoot%\System32\xcopy.exe "MainFolder\*" "Null" /G/H/I/L/Q/R/S