2014-10-01 95 views
0

我給了我的用戶幾個選項,然後等待他們的輸入。在我的測試中,當我按下[Enter]鍵進行任何選擇時,程序將崩潰並燒燬。它給我的錯誤「(在這個時候意外,」我怎麼能檢測如果用戶僅僅按下[Enter]鍵?檢測bat文件中的[Enter]鍵

這裏就是我有。

:pickClient 
set clientNum= 
cls 
echo. 
echo Pick a Client 
echo. 
echo. 
echo 1. Client 1 
echo. 
echo 2. Client 2 
echo. 
echo. 
echo [E] - EXIT 
echo. 
set /p clientNum=Input selection. 

if %clientNum%==1 (

    set client=client1Name 

) else if %clientNum%==2 (

    set client=client2Name 

) else if /i %clientNum%==E (

    GOTO goAway 

) else if %clientNum%==" " (

    GOTO pickClient 

) else (

    GOTO pickClient 

) 
+0

隨意'接受''ths'的答案 - 請參閱幫助菜單中的'tour'。 – foxidrive 2014-10-02 15:11:54

+1

您可以通過使用'if'與'/ i'參數忽略大小寫來縮短您的程序。 – Stephan 2014-10-02 20:00:40

+0

謝謝@Stephan!我感謝您的意見!我不知道這是可用的。我更新了我的代碼以反映這一點。 – 2014-10-03 14:47:50

回答

2

,如果你只是按回車鍵,變量是空的,你比較

if %clientNum%==1 (

成爲

if ==1 (

這是違法的。防止變量值這樣的問題,還是空間,謹慎的做法是始終圍繞在if變量和值與報價:

if "%clientNum%"=="1" (

就變成

if ""=="1" (

這是一個有效的語句。

+0

謝謝@ths的幫助!我不知道報價。我對配料很新,所以任何幫助都非常感謝。我將對我的批處理進行編輯。 – 2014-10-02 14:11:21

+0

要添加到此,如果我有'IF「%clientNum%」==「」'是否需要檢查變量是否定義? – 2014-10-02 14:19:43

+1

不,這實際上非常相當。 – ths 2014-10-02 14:55:37

1

我想它了!這裏的我做了什麼

set clientNum= 
cls 
echo. 
echo Pick a Client 
echo. 
echo. 
echo 1. Client 1 
echo. 
echo 2. Client 2 
echo. 
echo. 
echo [E] - EXIT 
echo. 
set /p clientNum=Input selection. 

IF NOT DEFINED clientNum GOTO pickClient <---I added this line of code. ***** 

if %clientNum%==1 (

    set client=client1Name 

) else if %clientNum%==2 (

    set client=client2Name 

) else if /i %clientNum%==E (

    GOTO goAway 

) else if %clientNum%==" " (

    GOTO pickClient 

) else (

    GOTO pickClient 

) 

更新:

感謝@部份樂於助人的投入,我發現,我應該開始測試變量在使用引號通過我自己的測試中,我發現了以下工作學家ust以及測試DEFINED。

set clientNum= 
cls 
echo. 
echo Pick a Client 
echo. 
echo. 
echo 1. Client 1 
echo. 
echo 2. Client 2 
echo. 
echo. 
echo [E] - EXIT 
echo. 
set /p clientNum=Input selection. 

if "%clientNum%"=="1" (

    set client=client1Name 

) else if "%clientNum%"=="2" (

    set client=client2Name 

) else if /i "%clientNum%"=="E" (

    GOTO goAway 

) else if "%clientNum%"==" " (

    GOTO pickClient 

) else if "%clientNum%"=="" (

    GOTO pickClient 

) else (

    GOTO pickClient 

) 

注意引號。通過對他的投入進行投票來給予一些愛。我非常感謝它。