Итт предлогаю задавать все вопросы которые связанны с вай-Ъ-кодингом в этойвоистину могущественной и нихуя не понятной среде. ОП начинает тред такой проблемой:
Кнопкодавствую в попытках кодирования ффмпегом многоканального аудио в стерео. Ес-но с полным сохранением имен поэтому сразу нужно обрабатывание ибо файлов много. ПОнял что есть вариант через папку и\или драг-дроп. Проблема такова что скрипт то рабочий нашел, но нихуя моменты а-ля "=!%~", особенно ебучие проценты и флаги которые идут за ним. Пример кода ниже
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"
Как бы основа понятна - базовый синтаксис goto и ffmpeg, но вопрос как блять определить правильно написать это дело под: -перетаскивание папки на батник, а не файлов в той же директории -как прописать сохранение кодированных файлов в другую папку -как определяется приоритетность указания путей в батнике, как они меняются -почему путь для загружаемого файла в примере указывается через %1 а не %* или %%буква как в лупе - что значит ебучая абракадабра "%~2"=="" ?
Аноним (Microsoft Windows 10: Firefox based)29/07/25 Втр 13:29:37№36270312
Предлагаю завалить ебало с этой ущербной хуйней и дрочить powershell/петухон/да хоть bash в wsl, все лучше чем эта дегенеративная легасиговнина.
Аноним (Google Android: Mobile Safari)29/07/25 Втр 14:01:06№36270464
>>3627033 неиронично отдаю предпочтение смд с clink, а не повершеллу. в чём конкретно я не прав?
Аноним (Microsoft Windows 10: New Opera)29/07/25 Втр 14:02:56№36270475
Покурил немного справ очники и выяснил что драг-дроп на смд позволяет сразу получать полный путь к файлу. Далее узнал за нагромождение goto - избежать циклов здесь удалось таким путем: используется первый goto который начинается с конца объявление repeat поэтому действует спокойное построчное исполнение кода; затем идет строчка собсна ffmpeg где вероятно через % указывается какой-то "селф" по совместительству путь перетаскиваемого файла, при этом цифра 1 есть неофф. флагом и счетчиком, но не понятно что значит ~n1 в имени создаваемого файла, вероятно флаг, и что значит ~2 в проверке следующего goto; дальше идет прерывающий goto с непонятной проверкой флага у процента; затем начала первого goto который будет выполнен если прерывающий второй goto не будет исполнен а вот назначение последего непонятно, если конечно это очередной вариант цикл-в цикле
Аноним (Microsoft Windows 10: Firefox based)29/07/25 Втр 14:06:00№36270486
>>3627046 В том, что ты мелкобуквенный мобилкодаун нетакуся, использующий анально-пердольные трюки вместо проверенных и популярных решений.
Аноним (Google Android: Mobile Safari)29/07/25 Втр 14:08:22№36270507
Аноним (Microsoft Windows 10: New Opera)29/07/25 Втр 14:09:19№36270518
>>3627047 Поразмартышлил и понял что делает там шифт - одиночный процент есть целью шифта где тот уменьшает на один значение последнего. Каждый раз цифра будет 1 а когда закончатся файлы то драг-дроп вернет ничего и цифра станет 0 тогда сработает проверка равенста с == и цикл оборвется. Но что делает последний goto?!
Аноним (Microsoft Windows 10: Firefox based)29/07/25 Втр 14:11:50№36270529
>>3627050 Я знаю что ты соевая хуета, по повадкам и поведению видно.
Аноним (Google Android: Mobile Safari)29/07/25 Втр 14:12:54№362705310
Аноним (Microsoft Windows 10: New Opera)29/07/25 Втр 16:58:37№362709912
Блять покурил еще ту хуйню что я написал, посмотрел на код еще раз и понял что и он работает на половину. Цикл обрывается после одного файла, при этом конвертируется последний файл который был под курсором; добавляя в конец адрес папки в директории тоже самое. Продолжаю курить.
Аноним (Microsoft Windows 10: New Opera)29/07/25 Втр 18:26:04№362712213
Опытным путем удалением по одной строчке определено что батник сразу закрывается после кодирования одного файла. Немного разобрав так называемое спагети из 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
Аноним (Microsoft Windows 10: New Opera)29/07/25 Втр 20:38:15№362716214
Заебавшись решил проверить что выдает репит если ффмпег заменить на текст
:REPEAT echo [%1] echo ["%~n1_st.flac"] if ["%~2"]==[] then pause else shift GOTO REPEAT pause
На выхлопе цикличное повторение строчки под курсором и ее "правленая" версия следом, по кругу
Аноним (Microsoft Windows 10: New Opera)29/07/25 Втр 21:16:38№362717115
Хуйня полнейшая выходит. Почитал еще за goto и оказывается что структура по типу змеи кусающей свой хвост - норма, пиздец. Т.е. выглядит так чтобы цикл прыжков разрывался также прыжками: :LOOP - метка основного цикла if "%~1"=="" goto :END - метка для выхода из цикла shift goto :LOOP - метка основного цикла :END - метка выхода из цикла
И какова была первая ошибка, хоть и не влияющая на первичную работо способность - проебанная метка для выхода из цикла в самом конце ... shift GOTO REPEAT GOTO REPEAT :EXIT - хотя это не точно, предстоит првоверить.
Пока обнаруженная проблема что возможно проебанны директории но где - пока разбираюст
Аноним (Microsoft Windows 10: New Opera)29/07/25 Втр 21:25:58№362717416
Уже теплее, теперь ошибка с тем что "указанная директория не существует и выдает дважды (тещщу на двух треках пока)
: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
Аноним (Google Android: Mobile Safari)29/07/25 Втр 21:34:38№362717617
>>3627171 тебе же говорят это легаси, нахуя ты это ковыряешь и ищешь в нем логику? Чтоб ты понимал, пидор очкастый тебе вот этой хуйни навешал, а сам по молодости бегал на маинфрейме с юниксом свой бейсик дрючил.
Аноним (Microsoft Windows 10: New Opera)29/07/25 Втр 21:45:03№362718118
>>3627026 (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.ком!
Аноним (Microsoft Windows 10: New Opera)29/07/25 Втр 22:09:23№362719119
Оказалось что все эти жесты глухонемых у смд - ~%!*^&" - это вполне норм система которую правда нужно задрочить ибо ошибиться легко а еще легче запутаться новичку. Что касается кода то не знаю пока луп через for лучше был бы или нет, но система с повторами интересна тем что позволяет просто манипулировать переменной... драг дропа. Немного непонятна правда работа команды шифт. Да она позволяет "перелистывать" список переменных от нужной точки, но не зная синтаксиса опасно применить ее. В остальном так понял основная ебля это пути - конкретно я не сразу вдуплил хотя несколько раз прочел что каждое последующее обращение к н-директории будет на нее заменять ту из которой идет исполнение файла. И на фоне мудреных повторов через ГОТО с килер-шифтом а вдобавок и много флагов которые надо знать - не сразу раздупляешь. Меня так и вовсе ввело в заблуждение ибо консоль сразу закрывалась без ошибок.
В остальном еще подправлю строчку ффмпег, добавлю проверку\создание папки для обработанных файлов и приймусь курить дальше. Нахуя? А хуй знает, но интересно - спортивно даже
Аноним (Google Android: Mobile Safari)30/07/25 Срд 01:56:37№362723120
>>3627191 >Оказалось что все эти жесты глухонемых у смд - ~%!*^&" регулярные выражения же? это не подразумевается читать, это write-only код