Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
krokradio
0 / 0 / 1
Регистрация: 01.06.2014
Сообщений: 48
#1

Склеивание аудиофайлов - CMD/BAT

02.08.2016, 13:17. Просмотров 346. Ответов 14
Метки нет (Все метки)

Добрый день всем. Помогите пожалуйста с двумя скриптами

Скрипт 1.
Имеем "//Folder1/". В ней лежит 24 файла с именами 01.mp3, 02.mp3, ....., 24.mp3
Имеем "//Folder2/". В ней тоже лежит 24 файла с именами 01.mp3, 02.mp3, ....., 24.mp3
Необходимо "//Folder1/01.mp3" склеить с "//Folder2/01.mp3" и положить в "//Folder3/" присвоив имя "01.mp3".
И так с каждой из 24-х пар.

Скрипт 2.
Имеем "//Folder3/". В ней лежит 24 файла с именами 01.mp3, 02.mp3, ....., 24.mp3 (результат Скрипта 1)
Имеем "//Folder4/". В ней лежит 59 файлов с именами 01.mp3, 02.mp3, ....., 59.mp3
Необходимо каждый файл из "//Folder3/" склеить с каждым файлом из "//Folder4/".
То есть на выходе в "//Folder5/" должно получится 1416 файлов. Имена этих 1416-ти файлов - это склейка имен файла из "//Folder3/" и файла из "//Folder4/". Если мы склеиваем "//Folder3/13.mp3" и "//Folder4/47.mp3", то на выходе имеем "//Folder5/1347.mp3"

Заранее благодарен за помощь.
http://www.cyberforum.ru/cmd-bat/thread1825093.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2016, 13:17
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Склеивание аудиофайлов (CMD/BAT):

Склеивание текстовых файлов и сортировка строк результирующего файла по убыванию или по возрастанию
Здравствуйте. Помогите написать батник, к сожалению наработок нет. Вот...

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

Парсер аудиофайлов
Всем привет! У меня возникла такая идея: Допустим есть некая директория,...

Скачивание аудиофайлов
Здравствуйте уважаемые форумчане, не знаю может немного промазал с темой но, я...

возпроезведение аудиофайлов
Всем привет! В общем такая проблема, есть программа, попросили доработать. Я...

14
alpap
1364 / 1095 / 348
Регистрация: 26.04.2015
Сообщений: 3,916
02.08.2016, 13:45 #2
krokradio,
По части склейки вы уже поднимали здесь тему.
По части остального, придется переименовывать файлы второй папки, а потом переименовывать назад уже в третьей (конечной) папке, как-то так.
0
krokradio
0 / 0 / 1
Регистрация: 01.06.2014
Сообщений: 48
02.08.2016, 14:27  [ТС] #3
alpap,
Цитата Сообщение от alpap Посмотреть сообщение
По части склейки вы уже поднимали здесь тему.
Да, я помню эту тему. http://www.cyberforum.ru/cmd-bat/thread1708867.html
Но там ко всем файлам в папке прибавлялся один и тот же файл. Тут же нужно к каждому файлу добавить свой. (((
Это по первому скрипту. Со вторым согласен, что его достаточно чуть подправить и применить 24 раза.
На сколько я понимаю, он должен выглядеть вот так?
Windows Batch file
1
2
3
4
5
6
7
8
@echo off
 
set "dir=C:\Folder4"
set "add=C:\Folder3\01.mp3"
 
for /f "delims= eol=" %%i in ('2^>nul dir/a-d/b "%dir%\*.mp3"') do copy/b "%add%"+"%dir%\%%i" "%dir%\%%i"
 
exit/b
0
alpap
1364 / 1095 / 348
Регистрация: 26.04.2015
Сообщений: 3,916
02.08.2016, 16:12 #4
krokradio,
Вообще по скрипту 1 и так работает:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
@echo off
set "d1=%Userprofile%\Desktop\Folder1"
set "d2=%Userprofile%\Desktop\Folder2"
set "d3=%Userprofile%\Desktop\Folder3"
for /f "delims=" %%a in ('dir/a-d/b "%d1%\*.mp3"') do (
 for /f "delims=" %%b in ('dir/a-d/b "%d2%\*.mp3"') do (
  pushd "%d3%"
   if %%a==%%b copy/b "%d1%\%%a"+"%d2%\%%b"
  popd
))
exit
пути обязательно полные прописывать

а по скрипту 2, если это разово - одно, будет меняться кол-во (27 на 64, например) - другое, почему так? К другому варианту нельзя привести?

Добавлено через 8 минут
Так удобнее (скрипт 1):
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
set "d1=Folder1"
set "d2=Folder2"
set "d3=Folder3"
set "rf=mp3"
for /f "delims=" %%a in ('dir/a-d/b "%d1%\*.%rf%"') do (
 for /f "delims=" %%b in ('dir/a-d/b "%d2%\*.%rf%"') do (
  if %%a==%%b copy/b "%d1%\%%a"+"%d2%\%%b" "%d3%\%%a"
))
exit
.
1
krokradio
0 / 0 / 1
Регистрация: 01.06.2014
Сообщений: 48
02.08.2016, 16:12  [ТС] #5
alpap,
Цитата Сообщение от alpap Посмотреть сообщение
К другому варианту нельзя привести?
Это разово. Это у меня начитаны фрагменты объявления времени (часы и минуты), которые программа будет подхватывать на исполнение, сверяя системное время с именем файла. Первый скрипт просто добавляет ко всем часам различные файлы оформления. А вот второй скрипт должен создать из элементов часов и минут 1416 файлов объявления времени на каждую минуту суток. Именно по этому конечное имя должно отображать содержимое цельного аудиофайла.
0
alpap
1364 / 1095 / 348
Регистрация: 26.04.2015
Сообщений: 3,916
02.08.2016, 16:18 #6
Цитата Сообщение от krokradio Посмотреть сообщение
Если мы склеиваем "//Folder3/13.mp3" и "//Folder4/47.mp3", то на выходе имеем "//Folder5/1347.mp3"
До меня вообще не доходит что будет склеваться после окончания файлов в папке "Folder3", 24 с 24, а потом, с 25м файлом из "Folder4" что?

Добавлено через 1 минуту
Быстрее вручную сделаете, если разово.
1
krokradio
0 / 0 / 1
Регистрация: 01.06.2014
Сообщений: 48
02.08.2016, 16:31  [ТС] #7
Цитата Сообщение от alpap Посмотреть сообщение
Быстрее вручную сделаете, если разово
))) 1416 файлов? у меня глаза уволятся )))
В //Folder3/ лежат начитки часов: 00 - ноль часов, ..... 13 - тринадцать часов, .... 23 - двадцать три часа (всего 24 файла от 00 до 23)
В //Folder4/ лежат начитки минут: 01 - одна минута, ....., 26 - двадцать шесть минут, ......, 59 - пятьдесят девять минут (всего 59 файлов от 01 до 59)
В //Folder5/ мне нужно получить 1416 файлов:
0001 - ноль часов одна минута
.......
1326 - тринадцать часов двадцать шесть минут
.......
2359 - двадцать три часа пятьдесят девять минут

(всего 1416 файла от 0001 до 2359)

Добавлено через 4 минуты
То есть только с файлом 00.mp3 из //Folder3/ получится 59 файлов от 0001.mp3 до 0059.mp3
0
alpap
1364 / 1095 / 348
Регистрация: 26.04.2015
Сообщений: 3,916
02.08.2016, 16:32 #8
Лучший ответ Сообщение было отмечено krokradio как решение

Решение

Так? (скрипт 2):
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
set "d3=Folder3"
set "d4=Folder4"
set "d5=Folder5"
set "rf=mp3"
for /f "delims=" %%a in ('dir/a-d/b "%d3%\*.%rf%"') do (
 for /f "delims=" %%b in ('dir/a-d/b "%d4%\*.%rf%"') do (
  copy "%d3%\%%a"+"%d4%\%%b" "%d5%\%%~na%%~nb.%rf%"
))
exit
.
1
YuS_2
Любознательный
710 / 503 / 165
Регистрация: 10.03.2016
Сообщений: 1,181
02.08.2016, 17:23 #9
Лучший ответ Сообщение было отмечено krokradio как решение

Решение

Цитата Сообщение от krokradio Посмотреть сообщение
Скрипт 1.
+
Цитата Сообщение от krokradio Посмотреть сообщение
Скрипт 2.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@echo off
set "f1=e:\papka1"
set "f2=e:\papka2"
set "f3=e:\papka3"
set "f4=e:\papka4"
set "f5=e:\papka5"
 
set p=0000
set n=2
set max=24
set max1=24
set max2=59
 
setlocal enabledelayedexpansion
for /l %%a in (1,1,%max%) do (
    set num=%p%%%a
    set nam=!num:~-%n%!
    copy /b "%f1%\!nam!.mp3"+"%f2%\!nam!.mp3" "%f3%\!nam!.mp3"
)
 
for /l %%a in (1,1,%max1%) do (
    set num1=%p%%%a
    set nam1=!num1:~-%n%!
    for /l %%b in (1,1,%max2%) do (
        set num2=%p%%%b
        set nam2=!num2:~-%n%!
        copy /b "%f3%\!nam1!.mp3"+"%f4%\!nam2!.mp3" "%f5%\!nam1!!nam2!.mp3"
    )
)
1
krokradio
0 / 0 / 1
Регистрация: 01.06.2014
Сообщений: 48
02.08.2016, 18:55  [ТС] #10
alpap,
Цитата Сообщение от alpap Посмотреть сообщение
Так? (скрипт 2):
Так. Только если ваш первый скрипт склеил все без проблем и плееры вин10 их нормально проигрывают, то скрипт 2 тоже все склеил, и по размеру видно что правильно. Но плееры вин10 вылетают с ошибкой. Почему - не пойму. РС с 7-кой на работе. Попробую завтра там.

YuS_2,
Ваши склеились прекрасно и спокойно воспроизводятся плеерами вин10. Но где-то в первом скрипте он пропускает файл "00.mp3" и уже в папке 3 такого файла нету. Соответственно и в папке 5 нету набора 00. Но этот момент я обошел присвоив 00 имя 24, а потом в тотале переименовал.

В общем задачи благодаря вам решены. alpap, Ваш первый скрипт позволил посклеивать голые часы с оформлением (законченные фразы. Бывает что в стране ровно 12 часов). YuS_2, Ваш помог разобраться с часами-минутами. Спасибо вам большое.
0
YuS_2
Любознательный
710 / 503 / 165
Регистрация: 10.03.2016
Сообщений: 1,181
02.08.2016, 19:06 #11
Лучший ответ Сообщение было отмечено krokradio как решение

Решение

Цитата Сообщение от krokradio Посмотреть сообщение
о где-то в первом скрипте он пропускает файл "00.mp3" и уже в папке 3 такого файла нету.
Он нигде не пропускает... он всё делает в точности так, как описаны исходные условия в первом сообщении. А там ничего не сказано о наличии файла 00.mp3
Если требуется вместо 24 использовать 00, то скрипт будет выглядеть так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@echo off
set "f1=e:\papka1"
set "f2=e:\papka2"
set "f3=e:\papka3"
set "f4=e:\papka4"
set "f5=e:\papka5"
 
set p=0000
set n=2
set max=23
set max1=23
set max2=59
 
setlocal enabledelayedexpansion
for /l %%a in (0,1,%max%) do (
    set num=%p%%%a
    set nam=!num:~-%n%!
    copy /b "%f1%\!nam!.mp3"+"%f2%\!nam!.mp3" "%f3%\!nam!.mp3"
)
 
for /l %%a in (0,1,%max1%) do (
    set num1=%p%%%a
    set nam1=!num1:~-%n%!
    for /l %%b in (1,1,%max2%) do (
        set num2=%p%%%b
        set nam2=!num2:~-%n%!
        copy /b "%f3%\!nam1!.mp3"+"%f4%\!nam2!.mp3" "%f5%\!nam1!!nam2!.mp3"
    )
)
2
krokradio
0 / 0 / 1
Регистрация: 01.06.2014
Сообщений: 48
02.08.2016, 19:22  [ТС] #12
YuS_2,
Цитата Сообщение от krokradio Посмотреть сообщение
То есть только с файлом 00.mp3 из //Folder3/ получится 59 файлов от 0001.mp3 до 0059.mp3
Но это не суть важно. Надо было мне точнее формулировать. Спасибо вам большое.
0
YuS_2
Любознательный
710 / 503 / 165
Регистрация: 10.03.2016
Сообщений: 1,181
02.08.2016, 19:22 #13
а если ещё требуется озвучивание 00:00, то в 24 строке скрипта, в наборе последовательности, необходимо изменить начало с 1 на 0 ...
1
alpap
1364 / 1095 / 348
Регистрация: 26.04.2015
Сообщений: 3,916
02.08.2016, 21:10 #14
Цитата Сообщение от krokradio Посмотреть сообщение
Но плееры вин10 вылетают с ошибкой. Почему - не пойму.
Возможно из-за
Цитата Сообщение от alpap Посмотреть сообщение
copy "%d3%\%%a"+"%d4%\%%b" "%d5%\%%~na%%~nb.%rf%"
стоит попробовать copy/b как в первом скрипте, там ведь все нормально, здесь забыл просто поставить, может в этом причина.
1
krokradio
0 / 0 / 1
Регистрация: 01.06.2014
Сообщений: 48
02.08.2016, 22:47  [ТС] #15
YuS_2,
Цитата Сообщение от YuS_2 Посмотреть сообщение
необходимо изменить начало с 1 на 0
, еще раз спасибо. Поправил.
alpap,
Цитата Сообщение от alpap Посмотреть сообщение
стоит попробовать copy/b
, тоже еще раз спасибо. Помогло.
0
02.08.2016, 22:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2016, 22:47
Привет! Вот еще темы с решениями:

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

База данных аудиофайлов
Здравствуйте Хочу написать свою первую программу, проигрыватель. Помогите...

Параллельное воспроизведение аудиофайлов
Здравствуйте! Задача такая: Воспроизведение нескольких (3-4) wav-файлов...

Lazarus и открытие аудиофайлов
При попытке открыть в консольной программе Lazarus аудиофайла .wav с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru