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

qqwwaass 12-02-2014 20:42 2308048

Имена папок и файлов определённого каталога в ТХТ файл .
 
Привет.
Нужен cmd/dat файл, который сможет копировать все подряд имена папок и файлов определённого каталога в текстовый файл.

Iska 12-02-2014 21:04 2308065

Код:

>"Путь\Файл.txt" dir /b /a "Путь"

qqwwaass 13-02-2014 00:11 2308147

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", а папка из которой запускается батник?

Iska 13-02-2014 01:20 2308168

Цитата:

Цитата qqwwaass
а так можно? »

Да. Кодировка результирующего файла будет ANSI/1251.

Цитата:

Цитата qqwwaass
как исключить скрытые и системные файлы? »

Убрать параметр «/a». Вы выше писали:
Цитата:

Цитата qqwwaass
все подряд имена »

посему я его добавил.

Цитата:

Цитата qqwwaass
как сделать по умолчанию не "path=G:\Music", а папка из которой запускается батник? »

«папка из которой запускается батник» — что понимается: 1) текущий, рабочий каталог или 2) каталог, в котором находится сам пакетный файл?

qqwwaass 13-02-2014 01:45 2308177

наверно так
Цитата:

Цитата Iska
2) каталог, в котором находится сам пакетный файл? »

чтобы универсальный получился, т.е. поместил в нужную папку и запустил от туда пакетный файл, а он в ней же и создаёт "лист_дата.тхт".

Iska 13-02-2014 02:04 2308189

Цитата:

Цитата qqwwaass
т.е. поместил в нужную папку и запустил от туда пакетный файл, »

Стало быть не «папка из которой запускается батник», а папка, в которой находится пакетный файл. Побочным эффектом такого некорректного использования будет появление в списке имени самого пакетного файла.
Код:

@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 2308294

Цитата:

Цитата Iska
«мухи отдельно, котлеты отдельно» »

да, удобно, но запускать через планировщик не получится.

а вот здесь,
Код:

@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, то в списке его не будет. Только не знаю как сюда вписать этот атрибут. :)

Georgio 13-02-2014 13:52 2308420

Цитата:

Цитата qqwwaass
да, удобно, но запускать через планировщик не получится. »

Что ж, либо так, либо вариант без аргументов через планировщик. Кстати, вариант с аргументами удобно использовать через контекстное меню "Отправить". Поместите ярлык для зтого пакетного файла (или сам пакетный файл) в папку "SendTo" и пользуйтесь.


Цитата:

Цитата qqwwaass
если bat-ник, и создаваемому файлу(list_musuc_%DATE%.txt) присвоить attrib +h, то в списке его не будет. Только не знаю как сюда вписать этот атрибут. »

Сюда:
Код:

set "sFileName=list_musuc_%DATE%.txt"
attrib +h "%sPath%%sFileName%"
attrib +h "%~f0"


Iska 13-02-2014 18:45 2308622

Цитата:

Цитата Georgio
Сюда: »

В этот момент его ещё нет.

Georgio 13-02-2014 19:44 2308635

Цитата:

Цитата Iska
В этот момент его ещё нет. »

Проблема ещё в том, что если к этому моменту создать этот файл, то в скрытый файл ничего не будет записываться.

Georgio 13-02-2014 20:33 2308654

Придумал "хитрую комбинацию":
Код:

>"%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)



Время: 23:50.

Время: 23:50.
© OSzone.net 2001-