PDA

Показать полную графическую версию : нужен командный файл формирования mp3-файла из четырех


krokradio
31-01-2014, 16:07
Ежедневная рубрика на радиостанции, которая должна выходить 3 раза в день. В 08-00, 14-00 и 19-30.

Есть папка
E:\Audio\MUSIC\- тематические подборки\Литургия\church\
В ней лежат начитанные и проименованные по датам формата ММЧЧ.mp3 файлы передач (пример 0201.mp3) и файлы вступления и выхода (календарь (лайнер).mp3 и календарь (финал).mp3)

Есть папка
E:\Audio\MUSIC\- тематические подборки\Литургия\
В ней лежит подборка музыки в подпапках (название альбома) и плейлист liturg.alb (Wolosoft Raduga)

Пример содержания файла liturg.alb открытого через блокнот

E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\01 - Doxazomen Sou Christe.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\02 - Ek Rizis Agathis.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\03 - O Synapostatis Tyrannos.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\04 - O Phariseos.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\05 - O Vasilevs Tis Doxis Christos.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\06 - I Edessa.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\07 - Tin Pentachordon Lyran.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\08 - Igapisas Theophore.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\09 - Yper Ton Ellinon.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\10 - I En Polles Amarties.mp3

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

Файлы для склейки:
1. E:\Audio\MUSIC\- тематические подборки\Литургия\church\календарь (лайнер).mp3
2. Файл передачи на текущую дату типа E:\Audio\MUSIC\- тематические подборки\Литургия\church\0201.mp3
3. Одну случайную дорожку из liturg.alb (есть возможность переименовать его в txt. Это ничего не поменяет)
4. E:\Audio\MUSIC\- тематические подборки\Литургия\church\календарь (финал).mp3

Путь формирования mp3-файла:
E:\Air\events\church\pool\

Имя mp3-файла:
формат: ччмм =ММЧЧ= календарь.mp3
пример:
0800 =0201= календарь.mp3
1400 =0201= календарь.mp3
1930 =0201= календарь.mp3

Помогите пожалуйста. Буду ОООчень благодарен.

krokradio
01-02-2014, 01:25
Попробую чуть попроще

Нужно из четырех музыкальных файлов сделать один.
1. E:\Audio\MUSIC\- тематические подборки\Литургия\church\календарь (лайнер).mp3
2. E:\Audio\MUSIC\- тематические подборки\Литургия\church\ММЧЧ.mp3 (ММ - месяц, ЧЧ - число) (Это календарь праздников. На каждый день новая начитка.)
3. E:\Audio\MUSIC\- тематические подборки\Литургия\случайная папка\случайный файл.mp3 (Там более 800 аудиофайлов рассортированых по альбомам. Нужно что б каждый раз выбирался рандомно один.)
4. E:\Audio\MUSIC\- тематические подборки\Литургия\church\календарь (финал).mp3

Эта процедура должна создавать 3 файла
E:\Air\events\church\pool\0800 =ММЧЧ= календарь.mp3 (ММ - месяц, ЧЧ - число)
E:\Air\events\church\pool\1400 =ММЧЧ= календарь.mp3 (ММ - месяц, ЧЧ - число)
E:\Air\events\church\pool\1930 =ММЧЧ= календарь.mp3 (ММ - месяц, ЧЧ - число)

Пример для 01 февраля (0201):

Есть
1. E:\Audio\MUSIC\- тематические подборки\Литургия\church\календарь (лайнер).mp3
2. E:\Audio\MUSIC\- тематические подборки\Литургия\church\0201.mp3
3. E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\03 - O Synapostatis Tyrannos.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\04 - O Phariseos.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\05 - O Vasilevs Tis Doxis Christos.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\06 - I Edessa.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\07 - Tin Pentachordon Lyran.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\08 - Igapisas Theophore.mp3
E:\Audio\MUSIC\- тематические подборки\Литургия\2009 - Kassia\09 - Yper Ton Ellinon.mp3
\И так далее более 40-ка папок и 800-та файлов
4. E:\Audio\MUSIC\- тематические подборки\Литургия\church\календарь (финал).mp3

Эта процедура должна создавать 3 файла
E:\Air\events\church\pool\0800 =0201= календарь.mp3
E:\Air\events\church\pool\1400 =0201= календарь.mp3
E:\Air\events\church\pool\1930 =0201= календарь.mp3


Если что-то упустил - скажите. Уточню.

Foreigner
01-02-2014, 06:11
Не проверял:

@echo off
setlocal
1>nul chcp 1251

for %%i in (0800 1400 1930) do call:0 %%i
goto:eof

:0
set "audio_1=E:\Audio\MUSIC\- тематические подборки\Литургия\church\календарь (лайнер).mp3"

for /f "tokens=2 delims=." %%i in ("%date%") do (

set "audio_2=E:\Audio\MUSIC\- тематические подборки\Литургия\church\%%j%%i.mp3"
set "d=%%j%%i"

)

for /f "tokens=*" %%i in (' dir /b /s "E:\Audio\MUSIC\- тематические подборки\Литургия\*.mp3" ') do call:1 "%%i"
for /f "tokens=2 delims==" %%i in (' set f_ ') do set "audio_3=%%i"
set "audio_4=E:\Audio\MUSIC\- тематические подборки\Литургия\church\календарь (финал).mp3"

for /f "tokens=2 delims==" %%i in (' set audio_ ') do 1>>"E:\Air\events\church\pool\%1 =%d%= календарь.mp3" type "%%i"
goto:eof

:1
set "f_%random%=%~1"

krokradio
01-02-2014, 16:48
При формировании имени файла написало с ошибкой "0800 =%j02= календарь.mp3"

Файлы создались с нулевым размером.
В CMD для склейки используется команда:
copy /b "D:\Папка номер 2\1.mp3"+"D:\Папка номер 2\2.mp3"+"D:\Папка номер 2\3.mp3"+"D:\Папка номер 2\4.mp3" "D:\Папка номер 2\5.mp3"

если параметр /b убрать, то файлы тоже создаются пустышками

Foreigner
01-02-2014, 18:07
"0800 =%j02= календарь.mp3" »
Исправьте:

for /f "tokens=1,2 delims=." %%i in ("%date%") do ...


В CMD для склейки используется команда: copy /b

type тоже работает. Попробовал:

for %%i in (1.mp3 2.mp3 3.mp3) do 1>>"4.mp3" type "%%i"


Но если вам удобней copy, то кто же может запретить? Вместо цикла с 'set audio_' пропишите строку копирования:

copy /b %audio_1%+%audio_2%+%audio_3%+%audio_4% "E:\Air\events\church\pool\%1 =%d%= календарь.mp3"

krokradio
01-02-2014, 18:54
В 11-й строчке я исправил на
for /f "tokens=1,2 delims=." %%i in ("%date%") do (
Больше ничего не изменял пока.
Имена файлов формируются правильно. Файлы не пустые, но

0800 =0201= календарь.mp3 - полностью нормальный. Сводит все 4 файла.

1400 =0201= календарь.mp3 и 1930 =0201= календарь.mp3 сводят только файлы 1, 2 и 4.

Музыкальные файлы из коллекции не подтягивает.
И еще. Все эти 3 созданных файла (0800 =0201= календарь.mp3, 1400 =0201= календарь.mp3 и 1930 =0201= календарь.mp3)
должны отличатся содержанием %audio_3%.
То есть это должно быть не создание одного файла с тремя разными именами, а создание трех разных по содержанию файлов.
:help:

krokradio
02-02-2014, 02:32
Я попробовал пойти обходным путем. Из кода в строчке "for %%i in (0800 1400 1930) do call:0 %%i" я убрал два значения. осталось "for %%i in (0800) do call:0 %%i"

Этот скрипт без проблем создает мне один файл вида "0800 =0201= календарь.mp3"

Для того, что б создать еще 1400 =0201= календарь.mp3 и 1930 =0201= календарь.mp3 я попробовал просто повторить в файле код 3 раза меняя значение
"for %%i in (0800) do call:0 %%i" на "for %%i in (1400) do call:0 %%i" и "for %%i in (1930) do call:0 %%i"

Возможно требуется какое-то разделение между ними, так как процесс уходит в цикл и чего то доклеивает в созданные файлы. Их размер растет непрерывно.

Foreigner
02-02-2014, 10:00
Немного переделал:

@echo off
setlocal
1>nul chcp 1251

for /f "tokens=1,2 delims=." %%i in ( "%date%" ) do set "d=%%j%%i"

set "audio_1=E:\Audio\MUSIC\- тематические подборки\Литургия\church\календарь (лайнер).mp3"
set "audio_2=E:\Audio\MUSIC\- тематические подборки\Литургия\church\%d%.mp3"
set "audio_4=E:\Audio\MUSIC\- тематические подборки\Литургия\church\календарь (финал).mp3"

for /f "tokens=*" %%i in (' dir /b /s "E:\Audio\MUSIC\- тематические подборки\Литургия\*.mp3" ') do call:set "%%i"
for %%i in (0800 1400 1930) do call:merge "%%i"
goto:eof

:set

set "mp3/%random%=%~1"
goto:eof

:merge

for /f "tokens=2,3 delims=/=" %%i in (' set mp3/ ') do (

set "audio_3=%%j"
set "del=%%i"

)

set "mp3/%del%="
copy /b "%audio_1%"+"%audio_2%"+"%audio_3%"+"%audio_4%" "E:\Air\events\church\pool\%~1 =%d%= календарь.mp3"

krokradio
02-02-2014, 13:51
ммм.... что-то происходит, но файлы в конечной папке не появляются...

Foreigner
02-02-2014, 16:46
krokradio, Я не тестировал полностью, т.к. не хотел создавать окружение под задачу. Попробуйте в команде copy все переменные audio_-# заключить в кавычки.

krokradio
02-02-2014, 17:31
К сожалению результат тот же... Сейчас вернусь с работы домой - буду сидеть вникать.

Iska
02-02-2014, 18:05
krokradio, теперь Вы меня понимаете? ;)

krokradio
02-02-2014, 20:21
теперь Вы меня понимаете? » :cry:

krokradio
03-02-2014, 00:03
@echo on
setlocal
1>nul chcp 1251

for %%i in (0800) do call:0 %%i
for %%i in (1400) do call:2 %%i
for %%i in (1930) do call:4 %%i
goto:eof

:0
set "audio_1=D:\BATник\church\календарь (лайнер).mp3"

for /f "tokens=1,2 delims=." %%i in ("%date%") do (

set "audio_2=D:\BATник\church\%%j%%i.mp3"
set "d=%%j%%i"

)

for /f "tokens=*" %%i in (' dir /b /s "D:\BATник\Папка номер 1\*.mp3" ') do call:1 "%%i"
for /f "tokens=2 delims==" %%i in (' set f_ ') do set "audio_3=%%i"
set "audio_4=D:\BATник\church\календарь (финал).mp3"

for /f "tokens=2 delims==" %%i in (' set audio_ ') do 1>>"D:\BATник\Папка номер 2\%1 =%d%= календарь.mp3" type "%%i"
goto:eof

:1
set "f_%random%=%~1"
goto:eof

:2
set "audio_1=D:\BATник\church\календарь (лайнер).mp3"

for /f "tokens=1,2 delims=." %%i in ("%date%") do (

set "audio_2=D:\BATник\church\%%j%%i.mp3"
set "d=%%j%%i"

)

for /f "tokens=*" %%i in (' dir /b /s "D:\BATник\Папка номер 1\*.mp3" ') do call:3 "%%i"
for /f "tokens=2 delims==" %%i in (' set f_ ') do set "audio_3=%%i"
set "audio_4=D:\BATник\church\календарь (финал).mp3"

for /f "tokens=2 delims==" %%i in (' set audio_ ') do 1>>"D:\BATник\Папка номер 2\%1 =%d%= календарь.mp3" type "%%i"
goto:eof

:3
set "f_%random%=%~1"
goto:eof

:4
set "audio_1=D:\BATник\church\календарь (лайнер).mp3"

for /f "tokens=1,2 delims=." %%i in ("%date%") do (

set "audio_2=D:\BATник\church\%%j%%i.mp3"
set "d=%%j%%i"

)

for /f "tokens=*" %%i in (' dir /b /s "D:\BATник\Папка номер 1\*.mp3" ') do call:5 "%%i"
for /f "tokens=2 delims==" %%i in (' set f_ ') do set "audio_3=%%i"
set "audio_4=D:\BATник\church\календарь (финал).mp3"

for /f "tokens=2 delims==" %%i in (' set audio_ ') do 1>>"D:\BATник\Папка номер 2\%1 =%d%= календарь.mp3" type "%%i"
goto:eof

:5
set "f_%random%=%~1"
goto:eof


Создает три файла. При первом запуске все три файла создало с разным размером. Я ооочень обрадовался. Но почему то все последующие запуски меня обломали.
0800 =0201= календарь.mp3 - нормально. Берет первую рендомную дорожку
1400 =0201= календарь.mp3 - нормально. Берет вторую рендомную дорожку
1930 =0201= календарь.mp3 = 1400 =0201= календарь.mp3 - не нормально. Тоже берет вторую рендомную дорожку.

Где я ошибся?

Мне кажется, что неправильно срабатывает строка set "f_%random%=%~1". Она то в двух, то во всех трех файлах повторяет аудио_3

Точно что-то с рандомом. Иногда все файлы разные, иногда два из трех одинаковые, иногда все три одинаковых. И это при предоставленном выборе в 100 файлов для аудио3.

Foreigner
03-02-2014, 01:45
krokradio, Не знаю почему у вас не работает мой последний вариант, я таки создал подобное окружение, у меня все отрабатывает корректно. mp3 более 3 тыс.

PS. Почему бы не создать плейлисты?

krokradio
03-02-2014, 02:22
PS. Почему бы не создать плейлисты? »

Скорее всего этим путем и пойду. Будет неудобство, что нужно будет файлы программ по три штуки в день ставить на разное время и раз в год обновлять базу. А в остальном модуль автоматизации возьму из существующих... Завтра буду на работе пробовать, а то все эти дни работал через тимвьювер. Немного не удобно и наконец загнал машину. а там запущенные процедуры позволяют восстановить ее только в безопасном режиме (если без гемороя с пошаговым убиванием процессов на тормозящей машине). :dont-know

Спасибо за помощь

Foreigner
03-02-2014, 07:37
krokradio, А в какой кодировке вы сохранили батник? Надо в cp1251 или если в cp866, убрать строчку с "chcp 1251"

krokradio
03-02-2014, 13:05
А в какой кодировке вы сохранили батник? »

через АкелПад в вин 1251 (ANSI - кирилица)




© OSzone.net 2001-2012