2013-04-09 118 views
0

好了,所以我工作的一個項目,我這樣做,我得到的confirmOne if語句,它給了我「(預計不會在這個時候。」請幫幫忙!批處理文件如果錯誤

許多流浪的「你到了這裏!」的消息是我試圖調試它的,我很快就需要這個,請幫忙,我也嘗試刪除零件,但它似乎仍然不起作用,如果你看到其他錯誤請告訴我,我需要的所有幫助我可以得到的。謝謝!

:grabInput 
echo Please enter the username of the user you wish to access. 

REM - } End Echoing Information/Main Menu | Grab Input { 

set /p result= 
goto correctName 

REM - } End Grab Input | Process Input { 

:correctName 
set /p input=%result% 
goto confirmOne 
:confirmOne 
echo Got to confirmOne 
pause 
if %input%==[] (
    pause 
    cls 
    echo Oops! Looks like you didn't enter anything! Try Agian! 
    echo. 
    echo ................................................................................ 
    echo. 
    goto grabInput 
) ELSE (
    goto confirmTwo 
) 


:confirmTwo 
echo Got to ConfirmTwo 
pause 
if %input%==~help (
    goto helpMenu 
) ELSE (
    goto confirmThree 
) 

:confirmThree 
echo Got to ConfirmThree 
if %input%==~info (
    goto infoMenu 
) ELSE (
    goto swapDrive 
) 

回答

1

好吧,如果你沒有爲%input%輸入任何內容,那麼你的if語句應該麗ke if ==[] (

if語句應該看起來像if [%input%] == [] (

我也看到了很多不必要的代碼,你應該看看在你的腳本。

0

總是作品的字符串。

的發言if %input%==[],當輸入%%設定爲[無](這是你想要什麼檢測),批量替代品[無] FO %input%,並得到

IF ==[] (

,是困惑因爲'('不是比較運算符。

[]不是一些魔法咒語,它是一種檢測參數存在的舊方法,如果參數缺失,[%1]將等於[],它不會' t當變量包含空格或其他字符時工作。

if "%var%"=="" is better 
if not defined var is better still 

注意

set /p var= 

不會將var爲[無]你只需按下enter,它會留下var不變。

因此,這

set var=something 
set /p var= 

將離開var設置爲something。您應該

set "var=" 
set /p var="Some prompt " 
if not defined var echo VAR is not defined 

這個代碼的引號var=確保var未設置爲[一些空間]如果有就行了尾部的空格。

除此之外,序列

goto somelabel 
:somelabel 

(REM線是不相關的)是多餘的。

同樣,在

if somecondition (goto somewhere) else (goto somewhereelse) 
:somewhereelse 

else條件是多餘

批次僅通知:label作爲用於GOTOCALL的目的地。否則將直接通過它發現的任何:label直接收費,就好像它們是評論聲明一樣。

+0

非常感謝! – user2263904 2013-04-10 21:46:25