Список файлов в папке и ее подпапках
Как бы его правильно объяснить суть задачи. Короче требуется вывести в текстовый файл список файлов в папке и ее подпапках в таком виде:
Код:
Название папки: (не полный путь, а только имена подпапок из указанной папки)
Список файлов (желательно без расширения, но не принципиально)
И так далее по всем подпапкам
Ну или ткните мордой в софтину позволяющую это реализовать.
|
Код:
@Echo Off
SetLocal EnableDelayedExpansion
:: Устанавливаем корневую папку
Set DataRoot=%~dp0
:: Текстовый файл для вывода
Set OutFile=out.txt
:: Выводим файлы из корневой папки
Echo Index of "\":&Echo Index of "\":>"%OutFile%"
For /F "delims=" %%A In ('Dir "%DataRoot%\" /B /A-D 2^>nul') Do (Echo %%~nA&Echo %%~nA>>"%OutFile%")
Echo.&Echo.>>"%OutFile%"
:: Получаем структуру вложенных папок
For /F "delims=" %%A In ('Dir "%DataRoot%\" /S /B /AD') Do (
Set RelativePath=%%A
:: Получение относительного пути из полного
Set RelativePath=!RelativePath:%DataRoot%=!
:: Выводим файлы из вложенных папок
Echo Index of "\!RelativePath!\":&Echo Index of "\!RelativePath!\":>>"%OutFile%"
For /F "delims=" %%B In ('Dir "%%~A" /B /A-D 2^>nul') Do (Echo %%~nB&Echo %%~nB>>"%OutFile%")
Echo.&Echo.>>"%OutFile%"
)
Pause
|
Anonymоus, спасибо. То что надо. Дальше сам допилю скрипт под себя. Единственное, хотелось бы кое-что уточнить. Объясни пожалуйста назначение
Цитата:
Цитата Anonymоus
SetLocal EnableDelayedExpansion »
|
и .
|
Цитата:
Цитата popt2t
Единственное, хотелось бы кое-что уточнить »
|
С этим уже сам разобрался. Но все равно еще есть вопрос :) Хотелось бы добавить в скрипт возможность создания списка по определенным расширениям. Знаю что достаточно дописать один аргумент в команду DIR, но куда конкретно не пойму. Anonymоus, помоги пожалуйста.
|
Цитата:
Цитата popt2t
Хотелось бы добавить в скрипт возможность создания списка по определенным расширениям. »
|
Например, так:
Код:
@Echo Off
SetLocal EnableDelayedExpansion
:: Устанавливаем корневую папку
Set DataRoot=%~dp0
:: Текстовый файл для вывода
Set OutFile=out.txt
:: Расширения
Set Extensions=exe bat png
:: Выводим файлы из корневой папки
Echo Index of "\":&Echo Index of "\":>"%OutFile%"
For %%A In (%Extensions%) Do (
For /F "delims=" %%B In ('Dir "%DataRoot%\*.%%A" /B /A-D 2^>nul') Do (Echo %%~nB&Echo %%~nB>>"%OutFile%")
)
Echo.&Echo.>>"%OutFile%"
:: Получаем структуру вложенных папок
For /F "delims=" %%A In ('Dir "%DataRoot%\" /S /B /AD') Do (
Set RelativePath=%%A
:: Получение относительного пути из полного
Set RelativePath=!RelativePath:%DataRoot%=!
:: Выводим файлы из вложенных папок
Echo Index of "\!RelativePath!\":&Echo Index of "\!RelativePath!\":>>"%OutFile%"
For %%B In (%Extensions%) Do (
For /F "delims=" %%C In ('Dir "%%~A\*.%%B" /B /A-D 2^>nul') Do (Echo %%~nC&Echo %%~nC>>"%OutFile%")
)
Echo.&Echo.>>"%OutFile%"
)
Pause
Изменения в коде понятны же, или лучше их прокомментировать?
|
Цитата:
Цитата Anonymоus
Изменения в коде понятны же, или лучше их прокомментировать? »
|
Да. Теперь полностью то что надо. Спасибо. Я так понимаю что расширение можно передавать параметром, что бы каждый раз не править скрипт?
|
Цитата:
Цитата popt2t
Я так понимаю что расширение можно передавать параметром »
|
Конечно, можно заменить %Extensions% на %* и вызывать скрипт с параметрами script.bat ext1 ext2 ext3...extN - главное, не забывать разделять их пробелами или запятой.
|
Anonymоus, БОЛЬШОЕ человеческое СПАСИБО за помощь!!!!
|
Не пойму в чем прикол, но на работе все работало как часы, а дома не хочет. Пишет "Непредвиденное появление: \." В чем может быть причина, ума не приложу?
|
И что интересно, такое происходит только с одной папкой!
Блин, вроде разобрался.
|
Время: 08:12.
© OSzone.net 2001-