![]() |
Крашится Bat после Else. Пытаюсь сделать переключатель параметра.
Если сугубо банально, то оно работает в упрощенном виде. И работает идеально.
Код:
set x=900 Проблемная строка: Код:
if %ErrorLevel%==9 (if %vat%==обычный (set vat=только аудио & set va=--extract-audio --audio-format mp3 --audio-quality & cls & goto Гменю) else if %vat%==только аудио (set vat=обычный & set va=88 & cls & goto Гменю)) |
Сильно критично чтобы все это было ванлайном? этж убицца такое читать.
Код:
if %ErrorLevel%==9 ( |
хотя бы так, там доработаете, а то не очень понятно из-за сумбурности
Код:
@echo off |
Цитата:
Цитата:
До следующего упрощенного примера я допёр, когда разбирался в проблеме. Здесь все работает как надо, но вот там, где необходимо - не работает. мх. утром я делал тоже самое, и когда x менялся с числа на слово, были краши. Код:
set x=900 Код:
setlocal EnableDelayedExpansion |
Так в скрипте (точнее в приведенном фрагменте) я вижу три "if" и только один "else". Отрабатывается всё, вполне возможно, правильно, но вдруг "if" сравнивает не так как хотелось бы?
Ну и, конечно если приводится реальный кусок кода, то я бы рекомендовал обратить внимание на вот это сравнение Код:
if %vat%==только аудио Код:
if "test 1"=="test 1" (echo 1) else (echo 0) Код:
if test 1==test 1 (echo 1) else (echo 0) |
Elven, Я понял. Проверил... и вернулся к тому, с чего всё это началось. А именно:
Код:
set x=как же сложно |
dbillika,
если нужен перебор пунктов одной кнопкой о choice придется забыть, например так можно: Код:
@echo off |
Код:
set x=как же сложно |
Кажись проблема в значении переменной. Какой же ужасный в cmd синтаксис.
Если работать с числами или одиночными словами, то все прекрасно. Но если переменная имеет значение, например: "Вася пупкин" или "5 5 5" или ""8""... мозг полностью взрывается. Если в IF переменную указывать в кавычках: if "%x%" проблем становится еще больше. Как правильно отделить в строке значение переменной от остального текста? Обычно это кавычки. Я сейчас перебираю все что знаю, и ничего не помогает. Как сказать переменной, что она: x="мама мыла раму", чтобы она имела значение: мама мыла раму без кавычек и пробелов, когда подставляется в любое место в коде? Но если она имеет значение без кавычек, то оператор if его забракует: if x=мама мыла раму - будет ошибкой. Голова кипит жестко. |
dbillika,
Код:
@Echo Off Код:
@Echo Off |
Цитата:
Цитата:
Код:
if "это текст"=="это текст" (echo Yes) Цитата:
Код:
set "x=мама мыла раму" Например, если надо уничтожить все пробелы: Код:
set "x=мама мыла раму" Цитата:
Код:
set "x=мама мыла раму" |
Цитата:
|
Цитата:
Код:
@echo off |
Хоспади... Триклятые ковычки!
Спасибо megaloman, это именно оно. Какими словами это нужно было сказать гуглу, чтобы он понял меня - не представляю. Ну вообщем, если интересно, я по крупицам собираю интерфейс управления ffmpeg и youtube-dl. Из знаний - дедукция и поверхностный Pascal школьных лет.. За пол года удалось настрочить это чудо(внутри много набросков и сохраненных из разных источников примеров, чтобы слепить всё воедино): Код:
@chcp 1251 & cls & @echo off |
Время: 06:24. |
Время: 06:24.
© OSzone.net 2001-