【问题标题】:Batch - Set variable through choice command批处理 - 通过选择命令设置变量
【发布时间】:2015-02-06 17:22:28
【问题描述】:

我正在编写一个小批量脚本,其中包括类似于下面的代码块的部分......如果说这让我感到困惑,我的大脑已经完全麻木了,那就太轻描淡写了......为什么在盖亚斯的绿色背面这不起作用...?

@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

【问题讨论】:

    标签: variables batch-file set choice


    【解决方案1】:
    if errorlevel 2 set log=N
    if errorlevel 1 set log=Y
    

    翻译:

    如果错误级别为 2 或大于 2,则设置 log=N
    如果 errorlevel 为 1 或大于 1 则设置 log=Y

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

    【讨论】:

    • 违反了选择命令语法的标准约定,但现在您已经解释了它是有道理的。真的非常感谢!
    【解决方案2】:

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

    试试这个:

    if errorlevel 1 if not errorlevel 2 (do stuff)

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

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

    【讨论】:

    • 感谢您的意见。 :D
    猜你喜欢
    • 2018-11-18
    • 2015-08-09
    • 2019-09-03
    • 2015-02-24
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多