Для цикла с использованием пользовательского ввода для объединения файлов — С помощью команды

#batch-file #command-line

Вопрос:

Я хотел бы попросить пользователя указать начальные и конечные номера и объединить только те файлы, например, у меня есть папка с:

 1.mp3
2.mp3
3.mp3 and so on...
 

Если пользователь ответит 4 для начала и 10 для конца, это будет сделано:
скопируйте /B 4.mp3 5.mp3 6.mp3 (до 10) в файл с именем Joined.mp3

Вот что у меня есть до сих пор… извините, немного…

 set /p start="Start:"
set /p end="End:"
for %g in ("c:tempmp3*.*") DO (copy /B ...)
 

Я здесь совсем заблудился… любой совет был бы очень признателен!

Комментарии:

1. я не думаю, что вы можете «складывать» такие аргументы. Вы можете type file1.ext >> output.file добавить, но я думаю, что это искажает текстовые двоичные данные. Я бы создал новый пакетный файл из старого (файл перенаправляется, глядя на вас), распечатал copy его, затем добавил к нему каждое интересное имя файла, а затем напечатал в нем последнюю часть команды ( joined.mp3 ). Затем у вас есть универсальный файл bat, который делает именно то, что вы хотите, запустите его и удалите.

2. for /L %%i in (%start%,1,%end%) do ECHO %%i.mp3 это должно дать тебе начало.

3. … do copy /B "temp.mp3" "%%I.mp3" "temp.mp3" , учитывая, что вы поставили cd /D "C:tempmp3" и > "temp.mp3" rem/ выше for петли, которую предложил Стефан…

4. Блестяще! Большое вам спасибо! немного подправить, и это шедевр… Спасибо!

5. @echo выключено setlocal включено расширение cd /D c:temp2mp3 set /p total=»Всего:» для /L %%i в (1,1,%всего%) DO ( > «песня%%i.mp3″ rem/ ) для /L %%i в (1,1,%всего%) DO ( set /p песня=»Номер песни:» set /p начало=»Начало:» эхо ! начинай! set /p end=»Конец:» эхо !конец! для /L %%i в (!начало!,1,!конец!) DO ( копировать /B «песня!песня!.mp3» «%%i.mp3» «песня!песня!.mp3» ) )