2015-02-06 31 views
0

我正在处理一个小批处理脚本,其中包含类似于下面的代码块的部分......这可能是一个轻描淡写的说,这让我很困惑,以至于我的思维已经完全麻木了...为什么在绿色背景上这是不行的...?批处理 - 通过选择命令设置变量

@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 

回答

0
if errorlevel 2 set log=N 
if errorlevel 1 set log=Y 

翻译:

如果错误级别是2或大于2组日志= N
如果错误级别为1或大于1张的组数= Y

所以 - 扭转因为如果错误级别是2,则它是2 or greater than 2(因此设置为N)然后是1 or greater than 1(因此设置为Y

+0

违抗标准约定选择命令的语法,但它现在是有道理的你已经解释了它。非常感谢你! – 2015-02-06 18:01:12

0

Windows(和旧DOS)中的一个奇怪之处在于,如果你设置“if errorlevel ...”,它实际上意味着“如果错误级别大于这个数字......”所以如果你说“如果错误级别1” “如果错误级别> 1”。

试试这个:

if errorlevel 1 if not errorlevel 2 (do stuff)

if errorlevel 2 if not errorlevel 3 (do other stuff)

或者,您可以使用临时变量%ERRORLEVEL%...

+0

感谢您的输入。 :d – 2015-02-06 18:01:45