CMD/BAT - Комментарий внутри цикла FOR

Аватара пользователя
Sisin

CMD/BAT - Комментарий внутри цикла FOR

Сообщение Sisin »

Как сделать, чтобы комментарий в цикле FOR не мешал работе:



Код:

Код: Выделить всё

for %%a in (*.mkv;*.mp4;*.wmv) do (
ffmpeg -i "%%~a" ^
-c:v copy ^
-c:a copy ^
:: Начало обрезки:
:: -ss 00:08:38 ^
:: Продолжительность обрезки:
:: -t 00:05:00 ^
"fix\%%~na.mkv"
)

т.е. я не хочу удалять строки, а лишь убрать из цикла для моего удобства.
Аватара пользователя
megaloman

Re: CMD/BAT - Комментарий внутри цикла FOR

Сообщение megaloman »

Sisin, имхо, двоеточие- это метка, а комментарий начинается rem c пробелом
Аватара пользователя
Sisin

Re: CMD/BAT - Комментарий внутри цикла FOR

Сообщение Sisin »

Цитата megaloman:



Sisin, имхо, двоеточие- это метка, а комментарий начинается rem c пробелом
CMD/BAT - Комментарий внутри цикла FOR




с rem тоже не работает.
Аватара пользователя
Iska

Re: CMD/BAT - Комментарий внутри цикла FOR

Сообщение Iska »

Sisin, комментарии не могут располагаться внутри строки команд. А у Вас, как было верно замечено, даже не комментарии. Впрочем, если бы были и комментарии — то тоже не могут. Уберите переносы и что выйдет?



Код:

Код: Выделить всё

for %%a in (*.mkv;*.mp4;*.wmv) do (
	ffmpeg.exe -i "%%~a" -c:v copy -c:a copy :: Начало обрезки::: -ss 00:08:38 :: Продолжительность обрезки::: -t 00:05:00 "fix\%%~na.mkv"
)

И с чего бы ей исполняться?!
Аватара пользователя
Sisin

Re: CMD/BAT - Комментарий внутри цикла FOR

Сообщение Sisin »

А можно как-то извратиться, чтобы аргументы для ffmpeg.exe передавались построчно, но так, чтобы между строчек можно было бы вставлять комментарии???
Аватара пользователя
Iska

Re: CMD/BAT - Комментарий внутри цикла FOR

Сообщение Iska »

Sisin, комментарии не могут располагаться внутри строки команд. А у Вас, как было верно замечено, даже не комментарии. Впрочем, если бы были и комментарии — то тоже не могут. Уберите переносы и что выйдет?



Код:

Код: Выделить всё

for %%a in (*.mkv;*.mp4;*.wmv) do (
	ffmpeg.exe -i "%%~a" -c:v copy -c:a copy :: Начало обрезки::: -ss 00:08:38 :: Продолжительность обрезки::: -t 00:05:00 "fix\%%~na.mkv"
)

И с чего бы ей исполняться?!
Аватара пользователя
Sisin

Re: CMD/BAT - Комментарий внутри цикла FOR

Сообщение Sisin »

Цитата Iska:



Я так понимаю, Вы комментарии вставляете не из любви к искусству, а для памяти, дабы не запоминать имена параметров, и за что каждый из них отвечает, да?
CMD/BAT - Комментарий внутри цикла FOR




Да, но дело в том, что два параметра я могу запомнить (я их указал в качестве примера для ffmpeg) )))



Вот другой НЕРАБОТАЮЩИЙ пример:



Пример

[spoiler]Код:
[/spoiler]

Код: Выделить всё

for %%a in (fix\*.mkv) do (
::Настройка по умолчанию для 1 видео и 1 аудио дорожек
mkvmerge -o "fixed\%%~nxa" ^
rem Распознавание дорожек:
rem -d 0 -a 1,2 -s 3
-d 0 a 1 -S -T ^
--track-name 0:"" ^
--track-name 1:"" ^
rem--track-name 2:"" ^
--language 0:und ^
--language 1:rus ^
rem --language 2:rus ^
--default-track 0:yes ^
--default-track 1:yes ^
rem --default-track 2:no ^
--forced-track 0:no ^
--forced-track 1:no ^
rem --forced-track 2:no ^
--compression 0:none ^
--compression 1:none ^
rem --compression 2:none ^
--title "" ^
rem Очередность дорожек:
rem --track-order 0:0,0:1,0:2,0:3
--track-order 0:0,0:1 ^
--no-global-tags ^
--no-chapters ^
--disable-track-statistics-tags ^
"%%~a"
)







Мне удобнее было бы не удалять строчки, а отключать.

Сейчас у меня комментарии расположены отдельно и приходится их переносить с места на место.



Так сейчас

[spoiler]Код:
[/spoiler]

Код: Выделить всё

for %%a in (fix\*.mkv) do (
::Настройка по умолчанию для 1 видео и 1 аудио дорожек
mkvmerge -o "fixed\%%~nxa" ^
-d 0 a 1 -S -T ^
--track-name 0:"" ^
--track-name 1:"" ^
--language 0:und ^
--language 1:rus ^
--default-track 0:yes ^
--default-track 1:yes ^
--forced-track 0:no ^
--forced-track 1:no ^
--compression 0:none ^
--compression 1:none ^
--title "" ^
--track-order 0:0,0:1 ^
--no-global-tags ^
--no-chapters ^
--disable-track-statistics-tags ^
"%%~a"
)
rem -d 0 -a 1,2 -s 3
rem -d 0 a 1 -S -T
rem --track-name 0:""
rem --track-name 1:""
rem--track-name 2:""
rem --language 0:und
rem --language 1:rus
rem --language 2:rus
rem --default-track 0:yes
rem --default-track 1:yes
rem --default-track 2:no
rem --forced-track 0:no
rem --forced-track 1:no
rem --forced-track 2:no
rem --compression 0:none
rem --compression 1:none
rem --compression 2:none
rem --title ""
rem --track-order 0:0,0:1,0:2,0:3
rem --track-order 0:0,0:1
rem --no-global-tags
rem --no-chapters
rem --disable-track-statistics-tags
Аватара пользователя
Sisin

Re: CMD/BAT - Комментарий внутри цикла FOR

Сообщение Sisin »

Цитата Sisin:



Мне удобнее было бы не удалять строчки, а отключать.
CMD/BAT - Комментарий внутри цикла FOR




Как я Вас понимаю Изображение. Но увы, фокус не удастся. Максимум, что Вы можете сделать — формировать командную строку отдельно, наподобие:



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
set sArguments=
rem Начало обрезки:
set sArguments=%sArguments% -ss 00:08:38
rem Продолжительность обрезки:
set sArguments=%sArguments% -t 00:05:00
for %%a in (*.mkv;*.mp4;*.wmv) do (
	ffmpeg.exe ^
		-i "%%~a" ^
		-c:v copy ^
		-c:a copy ^
		%sArguments% ^
		"fix\%%~na.mkv"
)
endlocal
exit /b 0







и при нужде Вы просто комментируете/раскомментируете тот или иной аргумент.



P.S. Может, Вам проще будет взять одну из многочисленных GUI-оболочек для ffmpeg.exe и не мучаться, не?!
Аватара пользователя
Sisin

Re: CMD/BAT - Комментарий внутри цикла FOR

Сообщение Sisin »

Цитата Iska:



P.S. Может, Вам проще будет взять одну из многочисленных GUI-оболочек для ffmpeg.exe и не мучаться, не?!
CMD/BAT - Комментарий внутри цикла FOR




Просто полный скрипт еще больше, а в нем используется 4 программы. GUI-оболочка не поможет, вернее поможет, но их будет 4, плюс ненужные телодвижения.
Аватара пользователя
Iska

Re: CMD/BAT - Комментарий внутри цикла FOR

Сообщение Iska »

Ну, тогда так:


Цитата Iska:



формировать командную строку отдельно,
CMD/BAT - Комментарий внутри цикла FOR




попробуйте, может сгодится.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»