Показать полную графическую версию : [решено] Имена папок и файлов определённого каталога в ТХТ файл .
qqwwaass
12-02-2014, 20:42
Привет.
Нужен cmd/dat файл, который сможет копировать все подряд имена папок и файлов определённого каталога в текстовый файл.
>"Путь\Файл.txt" dir /b /a "Путь"
qqwwaass
13-02-2014, 00:11
Iska, спасибо.
а так можно?
:: Отображение имён папок и файлов каталога Music в текстовом файле
@echo off
chcp 1251>nul
set "path=G:\Music"
set "file_name=list_musuc_%DATE%.txt"
>"%path%\%file_name%" dir /b /a "%path%"
ещё вопросы:
как исключить скрытые и системные файлы?
как сделать по умолчанию не "path=G:\Music", а папка из которой запускается батник?
а так можно? »
Да. Кодировка результирующего файла будет ANSI/1251.
как исключить скрытые и системные файлы? »
Убрать параметр «/a». Вы выше писали:
все подряд имена »
посему я его добавил.
как сделать по умолчанию не "path=G:\Music", а папка из которой запускается батник? »
«папка из которой запускается батник» — что понимается: 1) текущий, рабочий каталог или 2) каталог, в котором находится сам пакетный файл?
qqwwaass
13-02-2014, 01:45
наверно так 2) каталог, в котором находится сам пакетный файл? »чтобы универсальный получился, т.е. поместил в нужную папку и запустил от туда пакетный файл, а он в ней же и создаёт "лист_дата.тхт".
т.е. поместил в нужную папку и запустил от туда пакетный файл, »
Стало быть не «папка из которой запускается батник», а папка, в которой находится пакетный файл. Побочным эффектом такого некорректного использования будет появление в списке имени самого пакетного файла.
@echo off
setlocal enableextensions enabledelayedexpansion
>nul chcp 1251
set "sPath=%~dp0"
set "sFileName=list_musuc_%DATE%.txt"
>"%sPath%%sFileName%" dir /b "%sPath%"
>nul chcp 866
endlocal
exit /b 0
И никогда, никогда не используйте всуе не по назначению переменную окружения «PATH»!
Правильным же использованием считается «мухи отдельно, котлеты отдельно» — пакетный файл лежит в одном месте, работает везде, где потребно. Вместо того, чтобы плодить его копии где ни попадя, держите пакетный файл в одном месте и перетаскивайте на него искомую папку. Такой пакетный файл может выглядеть, например, следующим образом:
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=%~1
if defined sSourceFolder (
>nul chcp 1251
>"%sSourceFolder%\list_musuc_%DATE%.txt" (
for /f "usebackq delims=" %%i in (
`dir /b "%sSourceFolder%"`
) do if "%%~i" neq "list_musuc_%DATE%.txt" echo %%~i
)
>nul chcp 866
) else (
echo Usage: %~nx0 ^<Source folder^>
exit /b 1
)
endlocal
exit /b 0
qqwwaass
13-02-2014, 11:00
«мухи отдельно, котлеты отдельно» »да, удобно, но запускать через планировщик не получится.
а вот здесь,
@echo off
setlocal enableextensions enabledelayedexpansion
>nul chcp 1251
set "sPath=%~dp0"
set "sFileName=list_musuc_%DATE%.txt"
>"%sPath%%sFileName%" dir /b "%sPath%"
>nul chcp 866
endlocal
exit /b 0 если bat-ник, и создаваемому файлу(list_musuc_%DATE%.txt) присвоить attrib +h, то в списке его не будет. Только не знаю как сюда вписать этот атрибут. :)
да, удобно, но запускать через планировщик не получится. »
Что ж, либо так, либо вариант без аргументов через планировщик. Кстати, вариант с аргументами удобно использовать через контекстное меню "Отправить". Поместите ярлык для зтого пакетного файла (или сам пакетный файл) в папку "SendTo" и пользуйтесь.
если bat-ник, и создаваемому файлу(list_musuc_%DATE%.txt) присвоить attrib +h, то в списке его не будет. Только не знаю как сюда вписать этот атрибут. »
Сюда:
set "sFileName=list_musuc_%DATE%.txt"
attrib +h "%sPath%%sFileName%"
attrib +h "%~f0"
Сюда: »
В этот момент его ещё нет.
В этот момент его ещё нет. »
Проблема ещё в том, что если к этому моменту создать этот файл, то в скрытый файл ничего не будет записываться.
Придумал "хитрую комбинацию":
>"%sPath%%sFileName%" (dir /b /o-d "%sPath%"| more +1| sort)
Вот такой "блок":
set "sPath=%~dp0"
set "sFileName=list_musuc_%DATE%.txt"
attrib +h "%~f0"
>"%sPath%%sFileName%" (dir /b /o-d "%sPath%"| more +1| sort)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.