Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вывод в файл содержимое папки файлов с определенным расширением

Ответить
Настройки темы
CMD/BAT - [решено] Вывод в файл содержимое папки файлов с определенным расширением

Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Похожий нашел здесь, но он выводит все содержимое со всеми расширениями и во всех подкаталогах и только в папке, в которой он лежит:
Код: Выделить весь код
@echo off
(for /f delims^= %%i in ('dir /b /s /a-d') do (
set "file=%%i"
call echo %%file:%cd%=%%
)) > list.txt
Спасибо большое.

Отправлено: 19:35, 30-05-2018

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
>"list.txt" 2>nul dir /b /a:-d "c:\определенная папка\*.mp3"

Отправлено: 19:55, 30-05-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Сохранить в 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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 31-05-2018 в 18:20.


Отправлено: 20:33, 30-05-2018 | #3


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Цитата 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.
Не знаю имеет ли это значение, но папки которые я сканирую находятся в локальной сети с доступом только на чтение.

Отправлено: 10:56, 31-05-2018 | #4


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1218
Благодарности: 509

Профиль | Отправить PM | Цитировать


Цитата 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++ и т.п.

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:53, 31-05-2018 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата dedylka:
Правильно я вас понял, что весь batник будет выглядеть так: »
Неправильно. Не будет. Тот код, который я привёл — это и был «весь batник» пакетный файл.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:44, 31-05-2018 | #6


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 15:44, 31-05-2018 | #7


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Цитата 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
При "затаскивании" имени папки на значок батника или указании полного пути папки в параметре батника жестко заданное имя будет проигнорировано.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 31-05-2018 в 18:22.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:58, 31-05-2018 | #8


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 18:07, 31-05-2018 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вывод в файл содержимое папки файлов с определенным расширением

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] вывод файлов ls с исключающим расширением Тишина Программирование в *nix 3 13-05-2014 23:23
CMD/BAT - Поиск и удаление файлов с определенным расширением старше 1 года NoIZz Скриптовые языки администрирования Windows 2 22-10-2013 20:08
CMD/BAT - [решено] Вывод списка файлов с указанным расширением kelevara Скриптовые языки администрирования Windows 8 27-04-2013 03:59
CMD/BAT - [решено] Получить список файлов с определенным расширением 3StYleR Скриптовые языки администрирования Windows 1 18-07-2012 18:02
CMD/BAT - Пакетный файл, предназначенный для удаления файлов с определенным расширением ConMan Скриптовые языки администрирования Windows 11 26-03-2011 13:01




 
Переход