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

dedylka 30-05-2018 19:35 2816203

Вывод в файл содержимое папки файлов с определенным расширением
 
Привет.
Нужен batник, который смотрит в определенную папку (должна быть возможность изменять путь к папке) и выводил в файл только имена с расширением .mp3 без подкаталогов.

Похожий нашел здесь, но он выводит все содержимое со всеми расширениями и во всех подкаталогах и только в папке, в которой он лежит:
Код:

@echo off
(for /f delims^= %%i in ('dir /b /s /a-d') do (
set "file=%%i"
call echo %%file:%cd%=%%
)) > list.txt

Спасибо большое.

Iska 30-05-2018 19:55 2816205

Код:

>"list.txt" 2>nul dir /b /a:-d "c:\определенная папка\*.mp3"

megaloman 30-05-2018 20:33 2816207

Сохранить в 866 кодировке. Имя папки можно указать в аргументе батника. Либо создать значок на рабочем столе и затягивать на него обрабатываемую папку.
Код:

@Echo Off

Set "BoxIn=D:\Мой контент\Музыка\Село и люди"
Set "Maska=*.mp3"

If Not "%~1"=="" Set "BoxIn=%~1"
If "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn:~0,-1%"

Set "List=%BoxIn%\List.txt"

>"%List%" 2>&1 Dir "%BoxIn%\%Maska%" /B /A:-D


dedylka 31-05-2018 10:56 2816251

Спасибо за ответы.

Цитата:

Цитата megaloman
@Echo Off
Set "BoxIn=D:\Мой контент\Музыка\Село и люди"
Set "Maska=*.mp3"
If Not "%~1"=="" Set "BoxIn=%~1"
If "%BoxIn:~-1%"=="\" Set "BoxIn=%Box_In:~0,-1%"
Set "List=%BoxIn%\List.txt"
>"%List%" 2>&1 Dir "%BoxIn%\%Maska%" /B /A:-D »


Правильно я понял, что в этом случае выводимый файл появляется в папке которую сканировали? Нужно, чтобы появлялся в папке, из которой запускали batник, т.к. у меня сканируемая папка только на чтение. Сейчас выдает ошибку - отказано в доступе.
Еще скажите пожалуйста, как стандартными виндусовыми средствами сохранить в кодировке cp866, т.к. через блокнот нет этой кодировке в списке.


Цитата:

Цитата Iska
>"list.txt" 2>nul dir /b /a:-d "c:\определенная папка\*.mp3" »

Правильно я вас понял, что весь batник будет выглядеть так:

Код:

@echo off
(for /f delims^= %%i in ('dir /b /s /a-d') do (
set "file=%%i"
call echo %%file:%cd%=%%
)) >"list.txt"2>nul dir /b /a:-d "мой_путь_к_папке\*.mp3"

если да, то CMD выдает ошибку:
Непредвиденное появление: dir.
Не знаю имеет ли это значение, но папки которые я сканирую находятся в локальной сети с доступом только на чтение.

YuS_2 31-05-2018 12:53 2816277

Цитата:

Цитата dedylka
Нужен batник, который смотрит в определенную папку (должна быть возможность изменять путь к папке) и выводил в файл только имена с расширением .mp3 без подкаталогов. »

Код:

@echo off
>chcp 1251
rem Каталог задается первым параметром в строке запуска сценария, в кавычках
rem Если параметр отсутствует, задается строго определенный каталог
set "fld=%~1"
if "%fld%"=="" set "fld=C:\Определенная папка"
pushd "%fld%"
>"%~dp0\out.log" dir /b/a-d "*.mp3"
popd

Цитата:

Цитата dedylka
как стандартными виндусовыми средствами сохранить в кодировке cp866, т.к. через блокнот нет этой кодировке в списке. »

В блокноте сохраняете вышеприведенный сценарий в кодировке ANSI и всё будет работать.
Если требуется кодировка 866, то лучше установить какой-либо внешний текстовый редактор - AkelPad, Notepad++ и т.п.

Iska 31-05-2018 13:44 2816285

Цитата:

Цитата dedylka
Правильно я вас понял, что весь batник будет выглядеть так: »

Неправильно. Не будет. Тот код, который я привёл — это и был «весь batник» пакетный файл.

dedylka 31-05-2018 15:44 2816301

работают оба варианта. Спасибо за помощь.

megaloman 31-05-2018 17:58 2816316

Цитата:

Цитата dedylka
Нужно, чтобы появлялся в папке, из которой запускали batник »

Код:

@Echo Off
chcp 1251 >nul
Set "BoxIn=D:\Мой контент\Музыка\Село и люди"
Set "Maska=*.mp3"

If Not "%~1"=="" Set "BoxIn=%~1"
If "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn:~0,-1%"

Call :OutList "%BoxIn%" "%~dp0"
GoTo :Eof

:OutList
        >"%~2List_%~nx1.txt" 2>&1 Dir "%~1\%Maska%" /B /A:-D

При этом рядом с батником создастся файл "List_Имя сканируемой папки.txt" Не вижу смысла сохранять список под одним и тем же именем. А иначе - строчка кода Iska, которую прекрасно можно набрать руками, так как основные затраты при этом - пути папки и файла. Батник можно сохранить в стандартном notepad
При "затаскивании" имени папки на значок батника или указании полного пути папки в параметре батника жестко заданное имя будет проигнорировано.

dedylka 31-05-2018 18:07 2816318

Цитата:

Цитата megaloman
При этом рядом с батником создастся файл "List_Имя сканируемой папки.txt" Не вижу смысла сохранять список под одним и тем же именем. Батник можно сохранить в стандартном notepad »

работает. спасибо)


Время: 21:00.

Время: 21:00.
© OSzone.net 2001-