PDA

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


dedylka
30-05-2018, 19:35
Привет.
Нужен 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
>"list.txt" 2>nul dir /b /a:-d "c:\определенная папка\*.mp3"

megaloman
30-05-2018, 20:33
Сохранить в 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
Спасибо за ответы.

@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, т.к. через блокнот нет этой кодировке в списке.


>"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
Нужен 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

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

Iska
31-05-2018, 13:44
Правильно я вас понял, что весь batник будет выглядеть так: »
Неправильно. Не будет. Тот код, который я привёл — это и был «весь batник» пакетный файл.

dedylka
31-05-2018, 15:44
работают оба варианта. Спасибо за помощь.

megaloman
31-05-2018, 17:58
Нужно, чтобы появлялся в папке, из которой запускали 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
При этом рядом с батником создастся файл "List_Имя сканируемой папки.txt" Не вижу смысла сохранять список под одним и тем же именем. Батник можно сохранить в стандартном notepad »

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




© OSzone.net 2001-2012