2014-02-27 62 views
0

我有一个批处理脚本,当用户输入一个数字时,需要设置多个变量。出于某种原因,这个国家没有定下来。我究竟做错了什么?使用批处理脚本在if语句中设置多个变量

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

该作业使用=后的同一行上的所有内容。例如,对于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 
) 
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