cmd/bat“switch”。不会改变 ELSE 中的变量

cmd/bat“switch”。不会改变 ELSE 中的变量

我尝试在菜单中切换参数,但反向切换却没有改变。一切看似简单,但却行不通。

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

答案1

这就是你想做的事吗?

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并移动了。)

答案2

这是魔术。平庸的错误。

if x==0

它不比较变量的值,而只是比较 x。这就是它的工作原理,并且按预期工作:

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

相关内容