Общее количество файлов, папок и подпапок в текущем каталоге с использованием пакетного скрипта
У меня есть структура каталогов, такая как A-> B-> C, D-> E, F Где A содержит папку B и некоторые текстовые файлы, файлы sql, файлы журналов и т.д. B содержит папку C и многие другие файлы расширений. Аналогично, E, F также являются подкаталогами и содержат некоторые файлы. Теперь результат должен быть примерно таким: количество файлов: A- 10 A/B-15 A/B/C-20 D- 25 D/E-30 F-12 Спасибо за ваш ответ. Все подходы оценены,
Попробовал:
@ECHO OFF
SET "rootpath=%~1"
FOR /D %%D IN ("%~dp0*") DO (
SET cnt=0
FOR /F %%K IN ('DIR /A-D /S "%%D" 2^>NUL ^| FIND "File(s)" ^|^| ECHO 0') DO ( SET /A cnt+=%%K )
SETLOCAL EnableDelayedExpansion
ECHO %%D: !cnt!
ENDLOCAL
pause
)
Вам нужна рекурсивная подпрограмма, которая пересекает все дерево и выполняет один и тот же расчет в каждой подпапке. Этот подход проще:
EDIT: код изменен, чтобы избежать ошибок, когда имена подпапок имеют пробелы.
@echo off
setlocal EnableDelayedExpansion
set "base=%cd%\"
rem Accumulate files in the same array element given by its folder
for /R %%a in (*.*) do (
set "folder=%%~DPa"
set "folder=!folder:%base%=!"
set /A "count[!folder: =_!]+=1" 2> nul
)
rem Show the result
for /F "tokens=2,3 delims=[]=" %%a in ('set count[') do (
echo %%a-%%b
)
Подробное описание управления массивами в пакетных файлах см. В разделе: Массивы, связанные списки и другие структуры данных в скрипте cmd.exe (пакетный)
- Вопросы
- Batch-file
- Общее количество файлов, папок и подпапок в текущем каталоге с использованием пакетного скрипта