Компьютерный форум 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=200208)

neprotiv 22-02-2011 16:12 1619263

список файлов в директории
 
помогите в решении такой задачи
у меня есть куча папок а в них файлы
мне надо чтоб создавались тхт файл со списком файлов которые там лежат
и чтоб название тхт файла совпадало с названием папки

пример
ROOT\Aarktica - 2000 - No Solace In Sleep\
создало Aarktica - 2000 - No Solace In Sleep.txt в ней же или в root

спасибо

Anonymоus 22-02-2011 17:13 1619292

Создает в каждой из поддиректорий текстовый файл со списком файлов. Только один уровень вложенности, т.е оно обработает data\audio\*, data\images\* и data\video\*, но не обработает data\audio\folk-rock\*
Код:

@Echo Off
For /F "tokens=*" %%d In ('dir /A:D /B') Do Dir /B .\%%d>.\%%d\%%d.txt


neprotiv 22-02-2011 17:20 1619297

большое спасибо!!!!!
выручили

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

Anonymоus 22-02-2011 17:36 1619312

neprotiv, я немного ошибся и не учел путей с пробелами, вот теперь все отлично работает. Сохранять в кодировке 866, чтобы нормально работало с кириллицей.
Код:

@Echo Off
For /F "tokens=*" %%d In ('dir /A:D /B') Do Dir /B ".\%%d">".\%%d\%%d.txt"


neprotiv 22-02-2011 17:39 1619318

спасибо еще раз теперь все работает как надо

boss911 13-01-2012 05:09 1834492

Решил сюда написать. Нужно список файлов записать в переменную. Но список файлов должен быть в одну строку, а в качестве разделителя должен быть пробел.
Код:

FOR /F "Delims=" %%I IN ('DIR /B /L /O:N "Folder"') DO SET LIST=%%~I
Echo %LIST%

Что-то типа этого, но тут я получаю имя только одного последнего файла из последней строки, так как вывод файлов в виде одного столбца. Я просто не знаю, чтобы мне могло вывести список файлов в одну строку. Предпочтительно обойтись без сторонних утилит.

Anonymоus 13-01-2012 06:01 1834501

Например, вот так. Но если файлов очень много (к примеру, тысяч пять) - не рекомендую, на размер переменной есть ограничение, и очень длинная строка туда просто не влезет.

Код:

@Echo Off
SetLocal EnableDelayedExpansion
For /F "delims=" %%N In ('Dir "C:\Documents and Settings\Admin\.gimp-2.6\" /B /L /O:N') Do (Set Names=!Names! %%N)
If "%Names:~,1%"==" " Set Names=%Names:~1%
Echo %Names%
Pause


boss911 13-01-2012 07:44 1834526

Цитата:

Цитата Anonymоus
Но если файлов очень много ... »

Да, я об этом подумал. Тысячи точно не будет.

Благодарю, все работает, как я и хотел.


Время: 12:22.

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