Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 批处理-通过选择命令设置变量_Variables_Batch File_Set_Choice - Fatal编程技术网

Variables 批处理-通过选择命令设置变量

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

我正在编写一个小批量脚本,其中包括一个类似于下面代码块的部分。。。如果说这让我感到困惑,以至于我的头脑完全麻木了,那就太轻描淡写了。。。为什么在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%"=="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