Variables 批处理-通过选择命令设置变量
我正在编写一个小批量脚本,其中包括一个类似于下面代码块的部分。。。如果说这让我感到困惑,以至于我的头脑完全麻木了,那就太轻描淡写了。。。为什么在gaias green的背面这不起作用Variables 批处理-通过选择命令设置变量,variables,batch-file,set,choice,Variables,Batch File,Set,Choice,我正在编写一个小批量脚本,其中包括一个类似于下面代码块的部分。。。如果说这让我感到困惑,以至于我的头脑完全麻木了,那就太轻描淡写了。。。为什么在gaias green的背面这不起作用 @echo off set log=0 choice /m "Choose " if errorlevel 2 set log=N if errorlevel 1 set log=Y echo %log% pause if "%log%"=="N" ( echo hello ) if "%log%"=="
@echo off
set log=0
choice /m "Choose "
if errorlevel 2 set log=N
if errorlevel 1 set log=Y
echo %log%
pause
if "%log%"=="N" (
echo hello
)
if "%log%"=="Y" (
echo goodbye
)
pause
翻译成:
如果errorlevel为2或大于2,则设置log=N如果errorlevel为1或大于1,则设置log=Y 因此-将行反转,因为如果errorlevel为2,则它既是
2或大于2
(因此设置N
),然后是1或大于1
(因此设置Y
)Windows(和旧DOS)中的一个奇怪之处是,如果设置“if errorlevel…”,它实际上意味着“如果errorlevel大于此数字…”所以如果你说“if errorlevel 1”,你的意思是“if errorlevel>1”
试试这个:
if errorlevel 1 if not errorlevel 2(做事)
if errorlevel 2 if not errorlevel 3(做其他事情)
或者,您可以使用临时变量%ERRORLEVEL%…来违反choice命令语法的标准约定,但现在您已经解释过了,它是有意义的。非常感谢!谢谢你的意见D
if errorlevel 2 set log=N
if errorlevel 1 set log=Y