М.Двач / Программы

9 Кб, 669x338
Единого cmd тред /cmd/ Windows 10: New Opera 29 июля, 13:18 3627026 В конец треда | Веб

Без головного убора эдишн

Итт предлогаю задавать все вопросы которые связанны с вай-Ъ-кодингом в этойвоистину могущественной и нихуя не понятной среде. ОП начинает тред такой проблемой:

Кнопкодавствую в попытках кодирования ффмпегом многоканального аудио в стерео. Ес-но с полным сохранением имен поэтому сразу нужно обрабатывание ибо файлов много. ПОнял что есть вариант через папку и\или драг-дроп. Проблема такова что скрипт то рабочий нашел, но нихуя моменты а-ля "=!%~", особенно ебучие проценты и флаги которые идут за ним. Пример кода ниже

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"=="" ?

Ответы031056181

Windows 10: Firefox based 2 29 июля, 13:29 2 3627031

>>3627026 (OP)
Нахуя? Есть же PowerShell.

Android: Firefox based 3 29 июля, 13:35 3 3627033

Предлагаю завалить ебало с этой ущербной хуйней и дрочить powershell/петухон/да хоть bash в wsl, все лучше чем эта дегенеративная легасиговнина.

Ответы046

Android: Mobile Safari 4 29 июля, 14:01 4 3627046

>>3627033
неиронично отдаю предпочтение смд с clink, а не повершеллу. в чём конкретно я не прав?

Ответы048

Windows 10: New Opera 5 29 июля, 14:02 5 3627047

Покурил немного справ очники и выяснил что драг-дроп на смд позволяет сразу получать полный путь к файлу.
Далее узнал за нагромождение goto - избежать циклов здесь удалось таким путем:
используется первый goto который начинается с конца объявление repeat поэтому действует спокойное построчное исполнение кода;
затем идет строчка собсна ffmpeg где вероятно через % указывается какой-то "селф" по совместительству путь перетаскиваемого файла, при этом цифра 1 есть неофф. флагом и счетчиком, но не понятно что значит ~n1 в имени создаваемого файла, вероятно флаг, и что значит ~2 в проверке следующего goto;
дальше идет прерывающий goto с непонятной проверкой флага у процента;
затем начала первого goto который будет выполнен если прерывающий второй goto не будет исполнен
а вот назначение последего непонятно, если конечно это очередной вариант цикл-в цикле

Ответы051

Windows 10: Firefox based 6 29 июля, 14:06 6 3627048

>>3627046
В том, что ты мелкобуквенный мобилкодаун нетакуся, использующий анально-пердольные трюки вместо проверенных и популярных решений.

Ответы050

Android: Mobile Safari 7 29 июля, 14:08 7 3627050

>>3627048
>я соевая хуета

Ответы052

Windows 10: New Opera 8 29 июля, 14:09 8 3627051

>>3627047
Поразмартышлил и понял что делает там шифт - одиночный процент есть целью шифта где тот уменьшает на один значение последнего.
Каждый раз цифра будет 1 а когда закончатся файлы то драг-дроп вернет ничего и цифра станет 0 тогда сработает проверка равенста с == и цикл оборвется.
Но что делает последний goto?!

Windows 10: Firefox based 9 29 июля, 14:11 9 3627052

>>3627050
Я знаю что ты соевая хуета, по повадкам и поведению видно.

Ответы053

Android: Mobile Safari 10 29 июля, 14:12 10 3627053

>>3627052
>ряяяя нет ты

Windows 10: New Opera 11 29 июля, 14:26 11 3627056

>>3627026 (OP)
https://commandwindows.com/index.html
На всякий

Windows 10: New Opera 12 29 июля, 16:58 12 3627099

Блять покурил еще ту хуйню что я написал, посмотрел на код еще раз и понял что и он работает на половину.
Цикл обрывается после одного файла, при этом конвертируется последний файл который был под курсором; добавляя в конец адрес папки в директории тоже самое.
Продолжаю курить.

Windows 10: New Opera 13 29 июля, 18:26 13 3627122

Опытным путем удалением по одной строчке определено что батник сразу закрывается после кодирования одного файла.
Немного разобрав так называемое спагети из 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

Windows 10: New Opera 14 29 июля, 20:38 14 3627162

Заебавшись решил проверить что выдает репит если ффмпег заменить на текст

:REPEAT
echo [%1]
echo ["%~n1_st.flac"]
if ["%~2"]==[] then pause else shift
GOTO REPEAT
pause

На выхлопе цикличное повторение строчки под курсором и ее "правленая" версия следом, по кругу

Windows 10: New Opera 15 29 июля, 21:16 15 3627171

Хуйня полнейшая выходит. Почитал еще за goto и оказывается что структура по типу змеи кусающей свой хвост - норма, пиздец.
Т.е. выглядит так чтобы цикл прыжков разрывался также прыжками:
:LOOP - метка основного цикла
if "%~1"=="" goto :END - метка для выхода из цикла
shift
goto :LOOP - метка основного цикла
:END - метка выхода из цикла

И какова была первая ошибка, хоть и не влияющая на первичную работо способность - проебанная метка для выхода из цикла в самом конце
...
shift
GOTO REPEAT
GOTO REPEAT :EXIT - хотя это не точно, предстоит првоверить.

Пока обнаруженная проблема что возможно проебанны директории но где - пока разбираюст

Ответы176

Windows 10: New Opera 16 29 июля, 21:25 16 3627174

Уже теплее, теперь ошибка с тем что "указанная директория не существует и выдает дважды (тещщу на двух треках пока)

: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

Android: Mobile Safari 17 29 июля, 21:34 17 3627176

>>3627171
тебе же говорят это легаси, нахуя ты это ковыряешь и ищешь в нем логику?
Чтоб ты понимал, пидор очкастый тебе вот этой хуйни навешал, а сам по молодости бегал на маинфрейме с юниксом свой бейсик дрючил.

Это все пародия на юникс шелл но кривая, косая с непонятно нахуя поменянными символами (наверное ссал что в суд подадут и страховался, даже слеши долбоеб поменял). Открой документацию по башу
https://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-a-bash-script
вставь в wsl
и всё

Windows 10: New Opera 18 29 июля, 21:45 18 3627181

>>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.ком!

Windows 10: New Opera 19 29 июля, 22:09 19 3627191

Оказалось что все эти жесты глухонемых у смд - ~%!*^&" - это вполне норм система которую правда нужно задрочить ибо ошибиться легко а еще легче запутаться новичку.
Что касается кода то не знаю пока луп через for лучше был бы или нет, но система с повторами интересна тем что позволяет просто манипулировать переменной... драг дропа. Немного непонятна правда работа команды шифт. Да она позволяет "перелистывать" список переменных от нужной точки, но не зная синтаксиса опасно применить ее.
В остальном так понял основная ебля это пути - конкретно я не сразу вдуплил хотя несколько раз прочел что каждое последующее обращение к н-директории будет на нее заменять ту из которой идет исполнение файла. И на фоне мудреных повторов через ГОТО с килер-шифтом а вдобавок и много флагов которые надо знать - не сразу раздупляешь. Меня так и вовсе ввело в заблуждение ибо консоль сразу закрывалась без ошибок.

В остальном еще подправлю строчку ффмпег, добавлю проверку\создание папки для обработанных файлов и приймусь
курить дальше. Нахуя? А хуй знает, но интересно - спортивно даже

Ответы231

Android: Mobile Safari 20 30 июля, 01:56 20 3627231

>>3627191
>Оказалось что все эти жесты глухонемых у смд - ~%!*^&"
регулярные выражения же? это не подразумевается читать, это write-only код

Обновить тред

« /s/В начало тредаВеб-версияНастройки

/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.gq, m2ch.cf, m2ch.fapp.in, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion