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

5

我有一个批处理脚本,在用户输入数字时需要设置多个变量。但是出现了无法设置国家的问题。我做错了什么?

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个回答

8
这段内容可以更加健壮,但你缺少的只是&命令分隔符。
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

3
该赋值语句使用等号后的同一行上的所有内容。例如,对于“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
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接