Я пытаюсь сделать переключатель параметров в меню, но он не меняется в обратном направлении. Вроде все элементарно, но не работает.

set x=900
:1
cls & echo %x%
choice /c 12 /n
if %ErrorLevel%==1 (if x==0 (set x=1 & goto 1) else (set x=0 & goto 1))
if %ErrorLevel%==2 (if x==900 (set x=2 & goto 1))
goto 1

2 ответа2

0

Это то, что вы пытаетесь сделать?

set x=900 
:1 cls & echo %x%
 choice /c 12 /n
   if %ErrorLevel%==1 (if x==0 (set x=1 & goto 1) else (set x=0 & goto 1))
   if %ErrorLevel%==2 (if x==900 (set x=2 & goto 1) else goto 1)

Я добавил else и переместил а ) на последнюю строку.

0

это магия. Банальная ошибка.

if x==0

Он не сравнивает значение переменной, а просто х. Вот как это работает и работает как задумано:

if %x%==0 ... Тем не менее, это не работает в моем полном примере (также после ELSE. Вылетает):

cd %userprofile%/desktop/ffmpeg
set цикл==for %%a in ("in\*.*") do (

set va=
set vat=только аудио

:Гменю
echo    =================================================================
echo    [7]-Скачать видео по ссылке
echo    [8]-Скачать видео списоком
echo    [9]-Переключить режим скачивания (бычный/аудио). Сейчас активен режим: %vat%
echo %va%
echo    [0]-Выход
echo    =================================================================
choice /c 1234567890 /n /m "Нажми на клавиатуре клавишу, согласно пункту меню:"

if %ErrorLevel%==2 (goto ручныенастройки)
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 Гменю))

Здесь «переключатель» работает отлично:

set x=900
:1
cls 
echo bla-bla-bla u select to: %x%
echo ============
choice /c 12 /n
if %ErrorLevel%==1 (if %x%==0 (set x=1 & goto 1) else set x=0 & goto 1)
if %ErrorLevel%==2 (if %x%==2 (set x=3 & goto 1) else set x=2 & goto 1)
goto 1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .