使用批处理脚本在if语句中设置多个变量

时间:2014-02-27 23:18:57

标签: windows batch-file if-statement cmd

我有一个批处理脚本,我需要在用户输入数字时设置多个变量。由于某种原因,这个国家没有得到确定。我做错了什么?

set /P CLIENTOPTION=CLIENT:
IF /I '%CLIENTOPTION%'=='1' set CLIENTCHOICE=y set COUNTRY=UK
IF /I '%CLIENTOPTION%'=='2' set CLIENTCHOICE=w set COUNTRY=UK
IF /I '%CLIENTOPTION%'=='3' set CLIENTCHOICE=x set COUNTRY=UK
IF /I '%CLIENTOPTION%'=='4' set CLIENTCHOICE=y set COUNTRY=USA
IF /I '%CLIENTOPTION%'=='5' set CLIENTCHOICE=z set COUNTRY=CANADA

2 个答案:

答案 0 :(得分:4)

这可以更加健壮,但你所缺少的只是&命令分隔符。

set /P CLIENTOPTION=CLIENT:
IF /I '%CLIENTOPTION%'=='1' set CLIENTCHOICE=y&set COUNTRY=UK
IF /I '%CLIENTOPTION%'=='2' set CLIENTCHOICE=w&set COUNTRY=UK
IF /I '%CLIENTOPTION%'=='3' set CLIENTCHOICE=x&set COUNTRY=UK
IF /I '%CLIENTOPTION%'=='4' set CLIENTCHOICE=y&set COUNTRY=USA
IF /I '%CLIENTOPTION%'=='5' set CLIENTCHOICE=z&set COUNTRY=CANADA

答案 1 :(得分:1)

分配使用=之后同一行上的所有内容。例如,对于CLIENTOPTIONS === 1,变量CLIENTCHOICE被分配在=之后的所有内容,即"y set COUNTRY=UK"字符串。显然,不是你想要的。

你可以绕过这个,并通过使用括号获得预期的行为,并将每个动作放在一个单独的行上,如下所示:

set /P CLIENTOPTION=CLIENT:
IF /I '%CLIENTOPTION%'=='1' ( 
    set CLIENTCHOICE=y
    set COUNTRY=UK
)
IF /I '%CLIENTOPTION%'=='2' ( 
    set CLIENTCHOICE=w 
    set COUNTRY=UK
)
IF /I '%CLIENTOPTION%'=='3' ( 
    set CLIENTCHOICE=x 
    set COUNTRY=UK
)
IF /I '%CLIENTOPTION%'=='4' ( 
    set CLIENTCHOICE=y 
    set COUNTRY=USA
)
IF /I '%CLIENTOPTION%'=='5' (
    set CLIENTCHOICE=z 
    set COUNTRY=CANADA
)