
Без головного убора эдишн
Итт предлогаю задавать все вопросы которые связанны с вай-Ъ-кодингом в этойвоистину могущественной и нихуя не понятной среде. ОП начинает тред такой проблемой:
Кнопкодавствую в попытках кодирования ффмпегом многоканального аудио в стерео. Ес-но с полным сохранением имен поэтому сразу нужно обрабатывание ибо файлов много. ПОнял что есть вариант через папку и\или драг-дроп. Проблема такова что скрипт то рабочий нашел, но нихуя моменты а-ля "=!%~", особенно ебучие проценты и флаги которые идут за ним. Пример кода ниже
ECHO OFF :REPEAT
ffmpeg.exe -i %1 -af "pan=stereo|FL<1FL+0.707FC+0.707SL+1.58LFE|FR<1FR+0.707FC+0.707SR+1.58LFE" "%~n1_stereo.flac"
if "%~2"=="" GOTO EXIT
shift
GOTO REPEAT
GOTO REPEAT :EXIT
pause
Как бы основа понятна - базовый синтаксис goto и ffmpeg, но вопрос как блять определить правильно написать это дело под:
-перетаскивание папки на батник, а не файлов в той же директории
-как прописать сохранение кодированных файлов в другую папку
-как определяется приоритетность указания путей в батнике, как они меняются
-почему путь для загружаемого файла в примере указывается через %1 а не %* или %%буква как в лупе
- что значит ебучая абракадабра "%~2"=="" ?
Итт предлогаю задавать все вопросы которые связанны с вай-Ъ-кодингом в этойвоистину могущественной и нихуя не понятной среде. ОП начинает тред такой проблемой:
Кнопкодавствую в попытках кодирования ффмпегом многоканального аудио в стерео. Ес-но с полным сохранением имен поэтому сразу нужно обрабатывание ибо файлов много. ПОнял что есть вариант через папку и\или драг-дроп. Проблема такова что скрипт то рабочий нашел, но нихуя моменты а-ля "=!%~", особенно ебучие проценты и флаги которые идут за ним. Пример кода ниже
ECHO OFF :REPEAT
ffmpeg.exe -i %1 -af "pan=stereo|FL<1FL+0.707FC+0.707SL+1.58LFE|FR<1FR+0.707FC+0.707SR+1.58LFE" "%~n1_stereo.flac"
if "%~2"=="" GOTO EXIT
shift
GOTO REPEAT
GOTO REPEAT :EXIT
pause
Как бы основа понятна - базовый синтаксис goto и ffmpeg, но вопрос как блять определить правильно написать это дело под:
-перетаскивание папки на батник, а не файлов в той же директории
-как прописать сохранение кодированных файлов в другую папку
-как определяется приоритетность указания путей в батнике, как они меняются
-почему путь для загружаемого файла в примере указывается через %1 а не %* или %%буква как в лупе
- что значит ебучая абракадабра "%~2"=="" ?
>>026 (OP)
Нахуя? Есть же PowerShell.
Нахуя? Есть же PowerShell.
Предлагаю завалить ебало с этой ущербной хуйней и дрочить powershell/петухон/да хоть bash в wsl, все лучше чем эта дегенеративная легасиговнина.
>>033
неиронично отдаю предпочтение смд с clink, а не повершеллу. в чём конкретно я не прав?
неиронично отдаю предпочтение смд с clink, а не повершеллу. в чём конкретно я не прав?
Покурил немного справ очники и выяснил что драг-дроп на смд позволяет сразу получать полный путь к файлу.
Далее узнал за нагромождение goto - избежать циклов здесь удалось таким путем:
используется первый goto который начинается с конца объявление repeat поэтому действует спокойное построчное исполнение кода;
затем идет строчка собсна ffmpeg где вероятно через % указывается какой-то "селф" по совместительству путь перетаскиваемого файла, при этом цифра 1 есть неофф. флагом и счетчиком, но не понятно что значит ~n1 в имени создаваемого файла, вероятно флаг, и что значит ~2 в проверке следующего goto;
дальше идет прерывающий goto с непонятной проверкой флага у процента;
затем начала первого goto который будет выполнен если прерывающий второй goto не будет исполнен
а вот назначение последего непонятно, если конечно это очередной вариант цикл-в цикле
Далее узнал за нагромождение goto - избежать циклов здесь удалось таким путем:
используется первый goto который начинается с конца объявление repeat поэтому действует спокойное построчное исполнение кода;
затем идет строчка собсна ffmpeg где вероятно через % указывается какой-то "селф" по совместительству путь перетаскиваемого файла, при этом цифра 1 есть неофф. флагом и счетчиком, но не понятно что значит ~n1 в имени создаваемого файла, вероятно флаг, и что значит ~2 в проверке следующего goto;
дальше идет прерывающий goto с непонятной проверкой флага у процента;
затем начала первого goto который будет выполнен если прерывающий второй goto не будет исполнен
а вот назначение последего непонятно, если конечно это очередной вариант цикл-в цикле
>>046
В том, что ты мелкобуквенный мобилкодаун нетакуся, использующий анально-пердольные трюки вместо проверенных и популярных решений.
В том, что ты мелкобуквенный мобилкодаун нетакуся, использующий анально-пердольные трюки вместо проверенных и популярных решений.
>>047
Поразмартышлил и понял что делает там шифт - одиночный процент есть целью шифта где тот уменьшает на один значение последнего.
Каждый раз цифра будет 1 а когда закончатся файлы то драг-дроп вернет ничего и цифра станет 0 тогда сработает проверка равенста с == и цикл оборвется.
Но что делает последний goto?!
Поразмартышлил и понял что делает там шифт - одиночный процент есть целью шифта где тот уменьшает на один значение последнего.
Каждый раз цифра будет 1 а когда закончатся файлы то драг-дроп вернет ничего и цифра станет 0 тогда сработает проверка равенста с == и цикл оборвется.
Но что делает последний goto?!
Блять покурил еще ту хуйню что я написал, посмотрел на код еще раз и понял что и он работает на половину.
Цикл обрывается после одного файла, при этом конвертируется последний файл который был под курсором; добавляя в конец адрес папки в директории тоже самое.
Продолжаю курить.
Цикл обрывается после одного файла, при этом конвертируется последний файл который был под курсором; добавляя в конец адрес папки в директории тоже самое.
Продолжаю курить.
Опытным путем удалением по одной строчке определено что батник сразу закрывается после кодирования одного файла.
Немного разобрав так называемое спагети из goto пришел к выводу что обойтись можно и одним - один хрен выполняется задача всего один раз и цикл не запускается.
Теперь так:
ECHO OFF :REPEAT
ffmpeg.exe -i %1 -af "pan=stereo|FL<1FL+0.707FC+0.707SL+1.58LFE|FR<1FR+0.707FC+0.707SR+1.58LFE" "%~n1_st.flac"
if ["%~2"]==[] then EXIT else shift
GOTO REPEAT
pause
Немного разобрав так называемое спагети из goto пришел к выводу что обойтись можно и одним - один хрен выполняется задача всего один раз и цикл не запускается.
Теперь так:
ECHO OFF :REPEAT
ffmpeg.exe -i %1 -af "pan=stereo|FL<1FL+0.707FC+0.707SL+1.58LFE|FR<1FR+0.707FC+0.707SR+1.58LFE" "%~n1_st.flac"
if ["%~2"]==[] then EXIT else shift
GOTO REPEAT
pause
Заебавшись решил проверить что выдает репит если ффмпег заменить на текст
:REPEAT
echo [%1]
echo ["%~n1_st.flac"]
if ["%~2"]==[] then pause else shift
GOTO REPEAT
pause
На выхлопе цикличное повторение строчки под курсором и ее "правленая" версия следом, по кругу
:REPEAT
echo [%1]
echo ["%~n1_st.flac"]
if ["%~2"]==[] then pause else shift
GOTO REPEAT
pause
На выхлопе цикличное повторение строчки под курсором и ее "правленая" версия следом, по кругу
Хуйня полнейшая выходит. Почитал еще за goto и оказывается что структура по типу змеи кусающей свой хвост - норма, пиздец.
Т.е. выглядит так чтобы цикл прыжков разрывался также прыжками:
:LOOP - метка основного цикла
if "%~1"=="" goto :END - метка для выхода из цикла
shift
goto :LOOP - метка основного цикла
:END - метка выхода из цикла
И какова была первая ошибка, хоть и не влияющая на первичную работо способность - проебанная метка для выхода из цикла в самом конце
...
shift
GOTO REPEAT
GOTO REPEAT :EXIT - хотя это не точно, предстоит првоверить.
Пока обнаруженная проблема что возможно проебанны директории но где - пока разбираюст
Т.е. выглядит так чтобы цикл прыжков разрывался также прыжками:
:LOOP - метка основного цикла
if "%~1"=="" goto :END - метка для выхода из цикла
shift
goto :LOOP - метка основного цикла
:END - метка выхода из цикла
И какова была первая ошибка, хоть и не влияющая на первичную работо способность - проебанная метка для выхода из цикла в самом конце
...
shift
GOTO REPEAT
GOTO REPEAT :EXIT - хотя это не точно, предстоит првоверить.
Пока обнаруженная проблема что возможно проебанны директории но где - пока разбираюст
Уже теплее, теперь ошибка с тем что "указанная директория не существует и выдает дважды (тещщу на двух треках пока)
:REPEAT
if "%~1"=="" goto :END
cd "%~dp0/ffmpeg.exe" -i "%~1" -af "pan=stereo|FL<1FL+0.707FC+0.707SL+1.58LFE|FR<1FR+0.707FC+0.707SR+1.58LFE" "%~dp0/conv/%~n1.flac"
shift /1
goto :REPEAT
:END
pause
:REPEAT
if "%~1"=="" goto :END
cd "%~dp0/ffmpeg.exe" -i "%~1" -af "pan=stereo|FL<1FL+0.707FC+0.707SL+1.58LFE|FR<1FR+0.707FC+0.707SR+1.58LFE" "%~dp0/conv/%~n1.flac"
shift /1
goto :REPEAT
:END
pause
>>171
тебе же говорят это легаси, нахуя ты это ковыряешь и ищешь в нем логику?
Чтоб ты понимал, пидор очкастый тебе вот этой хуйни навешал, а сам по молодости бегал на маинфрейме с юниксом свой бейсик дрючил.
Это все пародия на юникс шелл но кривая, косая с непонятно нахуя поменянными символами (наверное ссал что в суд подадут и страховался, даже слеши долбоеб поменял). Открой документацию по башу
https://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-a-bash-script
вставь в wsl
и всё
тебе же говорят это легаси, нахуя ты это ковыряешь и ищешь в нем логику?
Чтоб ты понимал, пидор очкастый тебе вот этой хуйни навешал, а сам по молодости бегал на маинфрейме с юниксом свой бейсик дрючил.
Это все пародия на юникс шелл но кривая, косая с непонятно нахуя поменянными символами (наверное ссал что в суд подадут и страховался, даже слеши долбоеб поменял). Открой документацию по башу
https://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-a-bash-script
вставь в wsl
и всё
>>026 (OP)
ЙУХУ! Заработало! Итоговый код выглядит так:
set dir=%~dp0
:REPEAT
if "%~1"=="" goto :END
cd "%dir%
ffmpeg.exe -i "%~1" -af "pan=stereo|FL<1FL+0.707FC+0.707SL+1.58LFE|FR<1FR+0.707FC+0.707SR+1.58LFE" "conv\%~n1.flac"
shift /1
goto :REPEAT
:END
pause
Сейчас настрокаю все то что пришлось изменить; огромный кудос ss64.ком!
ЙУХУ! Заработало! Итоговый код выглядит так:
set dir=%~dp0
:REPEAT
if "%~1"=="" goto :END
cd "%dir%
ffmpeg.exe -i "%~1" -af "pan=stereo|FL<1FL+0.707FC+0.707SL+1.58LFE|FR<1FR+0.707FC+0.707SR+1.58LFE" "conv\%~n1.flac"
shift /1
goto :REPEAT
:END
pause
Сейчас настрокаю все то что пришлось изменить; огромный кудос ss64.ком!
Оказалось что все эти жесты глухонемых у смд - ~%!*^&" - это вполне норм система которую правда нужно задрочить ибо ошибиться легко а еще легче запутаться новичку.
Что касается кода то не знаю пока луп через for лучше был бы или нет, но система с повторами интересна тем что позволяет просто манипулировать переменной... драг дропа. Немного непонятна правда работа команды шифт. Да она позволяет "перелистывать" список переменных от нужной точки, но не зная синтаксиса опасно применить ее.
В остальном так понял основная ебля это пути - конкретно я не сразу вдуплил хотя несколько раз прочел что каждое последующее обращение к н-директории будет на нее заменять ту из которой идет исполнение файла. И на фоне мудреных повторов через ГОТО с килер-шифтом а вдобавок и много флагов которые надо знать - не сразу раздупляешь. Меня так и вовсе ввело в заблуждение ибо консоль сразу закрывалась без ошибок.
В остальном еще подправлю строчку ффмпег, добавлю проверку\создание папки для обработанных файлов и приймусь
курить дальше. Нахуя? А хуй знает, но интересно - спортивно даже
Что касается кода то не знаю пока луп через for лучше был бы или нет, но система с повторами интересна тем что позволяет просто манипулировать переменной... драг дропа. Немного непонятна правда работа команды шифт. Да она позволяет "перелистывать" список переменных от нужной точки, но не зная синтаксиса опасно применить ее.
В остальном так понял основная ебля это пути - конкретно я не сразу вдуплил хотя несколько раз прочел что каждое последующее обращение к н-директории будет на нее заменять ту из которой идет исполнение файла. И на фоне мудреных повторов через ГОТО с килер-шифтом а вдобавок и много флагов которые надо знать - не сразу раздупляешь. Меня так и вовсе ввело в заблуждение ибо консоль сразу закрывалась без ошибок.
В остальном еще подправлю строчку ффмпег, добавлю проверку\создание папки для обработанных файлов и приймусь
курить дальше. Нахуя? А хуй знает, но интересно - спортивно даже
>>191
регулярные выражения же? это не подразумевается читать, это write-only код
>Оказалось что все эти жесты глухонемых у смд - ~%!*^&"
регулярные выражения же? это не подразумевается читать, это write-only код