Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Список файлов в папке и ее подпапках

Ответить
Настройки темы
CMD/BAT - [решено] Список файлов в папке и ее подпапках

Аватара для popt2t

Ветеран


Сообщения: 787
Благодарности: 132


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: popt2t
Дата: 17-02-2013
Как бы его правильно объяснить суть задачи. Короче требуется вывести в текстовый файл список файлов в папке и ее подпапках в таком виде:

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

-------
Prince Of Persia


Отправлено: 14:37, 17-02-2013

 

Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:40, 18-02-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для popt2t

Ветеран


Сообщения: 787
Благодарности: 132

Профиль | Отправить PM | Цитировать


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

-------
Prince Of Persia


Отправлено: 11:18, 18-02-2013 | #3


Аватара для popt2t

Ветеран


Сообщения: 787
Благодарности: 132

Профиль | Отправить PM | Цитировать


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

-------
Prince Of Persia


Отправлено: 11:56, 18-02-2013 | #4


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Цитата 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
Изменения в коде понятны же, или лучше их прокомментировать?
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:20, 18-02-2013 | #5


Аватара для popt2t

Ветеран


Сообщения: 787
Благодарности: 132

Профиль | Отправить PM | Цитировать


Цитата Anonymоus:
Изменения в коде понятны же, или лучше их прокомментировать? »
Да. Теперь полностью то что надо. Спасибо. Я так понимаю что расширение можно передавать параметром, что бы каждый раз не править скрипт?

-------
Prince Of Persia


Отправлено: 15:32, 18-02-2013 | #6


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Цитата popt2t:
Я так понимаю что расширение можно передавать параметром »
Конечно, можно заменить %Extensions% на %* и вызывать скрипт с параметрами script.bat ext1 ext2 ext3...extN - главное, не забывать разделять их пробелами или запятой.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:50, 18-02-2013 | #7


Аватара для popt2t

Ветеран


Сообщения: 787
Благодарности: 132

Профиль | Отправить PM | Цитировать


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

-------
Prince Of Persia


Отправлено: 18:47, 18-02-2013 | #8


Аватара для popt2t

Ветеран


Сообщения: 787
Благодарности: 132

Профиль | Отправить PM | Цитировать


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

-------
Prince Of Persia


Отправлено: 23:47, 18-02-2013 | #9


Аватара для popt2t

Ветеран


Сообщения: 787
Благодарности: 132

Профиль | Отправить PM | Цитировать


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

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

-------
Prince Of Persia


Отправлено: 00:14, 19-02-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Список файлов в папке и ее подпапках

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Удаление всех файлов кроме одного в подпапках SELFY Скриптовые языки администрирования Windows 2 29-07-2012 15:34
CMD/BAT - [решено] Нужно найти все файлы *.log в папке dir и подпапках и заменить на файлы нулевой длины dclxvi Скриптовые языки администрирования Windows 4 04-07-2012 21:28
CMD/BAT - [решено] Найти, есть ли в папке (и подпапках) изменённые файлы с указанной даты frid-karatel Скриптовые языки администрирования Windows 29 11-05-2011 07:12
[решено] Поиск файлов в подпапках и их последующее копирование D_Master AutoIt 4 10-02-2009 07:32
php как вывести список всех файлов в папке E-mail Вебмастеру 6 12-02-2005 17:33




 
Переход