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