2014-02-27 94 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