Общее количество файлов, папок и подпапок в текущем каталоге с использованием пакетного скрипта

69
4

У меня есть структура каталогов, такая как 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
)

спросил(а) 2016-02-02T09:42:00+03:00 4 года, 8 месяцев назад
1
Решение
57

Вам нужна рекурсивная подпрограмма, которая пересекает все дерево и выполняет один и тот же расчет в каждой подпапке. Этот подход проще:

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 (пакетный)

ответил(а) 2016-02-02T19:44:00+03:00 4 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема