Показать полную графическую версию : [решено] список файлов в директории
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
спасибо еще раз теперь все работает как надо
Решил сюда написать. Нужно список файлов записать в переменную. Но список файлов должен быть в одну строку, а в качестве разделителя должен быть пробел.
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
Но если файлов очень много ... »
Да, я об этом подумал. Тысячи точно не будет.
Благодарю, все работает, как я и хотел.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.