PDA

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


neprotiv
22-02-2011, 16:12
помогите в решении такой задачи
у меня есть куча папок а в них файлы
мне надо чтоб создавались тхт файл со списком файлов которые там лежат
и чтоб название тхт файла совпадало с названием папки

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

спасибо

Anonymоus
22-02-2011, 17:13
Создает в каждой из поддиректорий текстовый файл со списком файлов. Только один уровень вложенности, т.е оно обработает 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
большое спасибо!!!!!
выручили

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

Anonymоus
22-02-2011, 17:36
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
спасибо еще раз теперь все работает как надо

boss911
13-01-2012, 05:09
Решил сюда написать. Нужно список файлов записать в переменную. Но список файлов должен быть в одну строку, а в качестве разделителя должен быть пробел.
FOR /F "Delims=" %%I IN ('DIR /B /L /O:N "Folder"') DO SET LIST=%%~I
Echo %LIST%
Что-то типа этого, но тут я получаю имя только одного последнего файла из последней строки, так как вывод файлов в виде одного столбца. Я просто не знаю, чтобы мне могло вывести список файлов в одну строку. Предпочтительно обойтись без сторонних утилит.

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


@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
Но если файлов очень много ... »
Да, я об этом подумал. Тысячи точно не будет.

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




© OSzone.net 2001-2012