Войти

Показать полную графическую версию : [решено] Создать список имен папок с указанием кол-ва файлов в каждой.


Metallor
24-03-2016, 08:37
Здравствуйте, помогите пожалуйста в решении следующей проблемы:
В основной папке находится 1500 подпапок
E:\Основная папка\0001 ''Папка'' [D-4, us, Фильмы]
E:\Основная папка\0002 Папка [часть 1] [D-4, us, Фильмы]
E:\Основная папка\0003 Папка [часть 2] [D-4, us, Фильмы]
E:\Основная папка\0004 Папка [часть 3] [D-4, us, Фильмы]
E:\Основная папка\0005 Папка [часть 1] [D-4, us, Фильмы]
... и т.д.

Необходимо в виде текстового документа создать такой список, в котором под именем каждой подпапки указывалось сколько в ней находится файлов
0001 ''Папка'' [D-4, us, Фильмы]
300
0002 Папка [часть 1] [D-4, us, Фильмы]
345
0003 Папка [часть 2] [D-4, us, Фильмы]
568
0004 Папка [часть 3] [D-4, us, Фильмы]
25
0005 Папка [часть 1] [D-4, us, Фильмы]
9
... и т.д.

Iska
24-03-2016, 09:43
сколько в ней находится файлов »
Только в ней самой или включая файлы во вложенных папках?

Metallor
24-03-2016, 09:48
Iska
В каждой подпапке находятся только файлы. Так что да, только в ней самой.

megaloman
24-03-2016, 10:24
@Echo Off

SetLocal EnableExtensions EnableDelayedExpansion

Set "In=E:\Основная папка"
Set "TXT=E:\Основная папка\__Count.txt"

Del "%TXT%" >nul 2>nul

FOR /F "usebackq delims=" %%i IN (`Dir "%In%\*.*" /B /A:D 2^>nul`) DO (
Set /A N=0
FOR /F "usebackq delims=" %%j IN (`Dir "%In%\%%i" /B /A:-D 2^>nul`) DO Set /A N+=1
Set "N= !N!"
>>"%TXT%" Echo !N:~-6! %%i
)

Metallor
24-03-2016, 10:37
megaloman
Получается так:
300 0001 ''Папка'' [D-4, us, Фильмы]
345 0002 Папка [часть 1] [D-4, us, Фильмы]

А хотелось бы так:
0001 ''Папка'' [D-4, us, Фильмы]
300
0002 Папка [часть 1] [D-4, us, Фильмы]
345

Iska
24-03-2016, 10:46
>>"%TXT%" Echo !N:~-6! %%i »
А хотелось бы так: »
>>"%TXT%" Echo %%i
>>"%TXT%" Echo !N:~-6!

megaloman
24-03-2016, 16:53
Metallor, ИМХО, мой способ представления отчета более нагляден и читаем. Как Вам хочется, можно написать FOR /F "usebackq delims=" %%i IN (`Dir "%In%\*.*" /B /A:D 2^>nul`) DO (
Set /A N=0
FOR /F "usebackq delims=" %%j IN (`Dir "%In%\%%i" /B /A:-D 2^>nul`) DO Set /A N+=1
>>"%TXT%" Echo %%i
>>"%TXT%" Echo !N!
) Пробелы впереди кол-ва файлов я делал для того, чтобы иметь возможность выровнять значения в первом столбце отчета в предыдущем решении для читаемости.




© OSzone.net 2001-2012