Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Список файлов в папке и ее подпапках (http://forum.oszone.net/showthread.php?t=254225)

popt2t 17-02-2013 14:37 2092558

Список файлов в папке и ее подпапках
 
Как бы его правильно объяснить суть задачи. Короче требуется вывести в текстовый файл список файлов в папке и ее подпапках в таком виде:

Код:

Название папки: (не полный путь, а только имена подпапок из указанной папки)
Список файлов (желательно без расширения, но не принципиально)
И так далее по всем подпапкам

Ну или ткните мордой в софтину позволяющую это реализовать.

Anonymоus 18-02-2013 07:40 2093135

Код:

@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


popt2t 18-02-2013 11:18 2093224

Anonymоus, спасибо. То что надо. Дальше сам допилю скрипт под себя. Единственное, хотелось бы кое-что уточнить. Объясни пожалуйста назначение
Цитата:

Цитата Anonymоus
SetLocal EnableDelayedExpansion »

и
Цитата:

Цитата Anonymоus
%~dp0 »

.

popt2t 18-02-2013 11:56 2093237

Цитата:

Цитата popt2t
Единственное, хотелось бы кое-что уточнить »

С этим уже сам разобрался. Но все равно еще есть вопрос :) Хотелось бы добавить в скрипт возможность создания списка по определенным расширениям. Знаю что достаточно дописать один аргумент в команду DIR, но куда конкретно не пойму. Anonymоus, помоги пожалуйста.

Anonymоus 18-02-2013 14:20 2093330

Цитата:

Цитата 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

Изменения в коде понятны же, или лучше их прокомментировать?

popt2t 18-02-2013 15:32 2093401

Цитата:

Цитата Anonymоus
Изменения в коде понятны же, или лучше их прокомментировать? »

Да. Теперь полностью то что надо. Спасибо. Я так понимаю что расширение можно передавать параметром, что бы каждый раз не править скрипт?

Anonymоus 18-02-2013 17:50 2093532

Цитата:

Цитата popt2t
Я так понимаю что расширение можно передавать параметром »

Конечно, можно заменить %Extensions% на %* и вызывать скрипт с параметрами script.bat ext1 ext2 ext3...extN - главное, не забывать разделять их пробелами или запятой.

popt2t 18-02-2013 18:47 2093580

Anonymоus, БОЛЬШОЕ человеческое СПАСИБО за помощь!!!!

popt2t 18-02-2013 23:47 2093885

Не пойму в чем прикол, но на работе все работало как часы, а дома не хочет. Пишет "Непредвиденное появление: \." В чем может быть причина, ума не приложу?

popt2t 19-02-2013 00:14 2093926

И что интересно, такое происходит только с одной папкой!

Блин, вроде разобрался.


Время: 08:12.

Время: 08:12.
© OSzone.net 2001-