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

时间:2015-02-06 17:22:29

标签: variables batch-file set choice

我正在制作一个小批量脚本,其中包含一个类似于下面代码块的部分......如果说这让我感到困惑,我的思绪已经完全麻木,那将是轻描淡写的......为什么在gaias绿色背面这不起作用......?

@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

2 个答案:

答案 0 :(得分:1)

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

试试这个:

if errorlevel 1 if not errorlevel 2 (do stuff)

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

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

答案 1 :(得分:0)

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

翻译:

如果errorlevel为2或大于2,则设置log = N
如果errorlevel为1或大于1 set log = Y

所以 - 反转这些行,因为如果errorlevel为2,则它都是2 or greater than 2(所以设置为N)然后是1 or greater than 1(所以设置为Y