簡體   English   中英

錯誤-“此時Goto出乎意料”,當留空字段並按Enter時-批處理

[英]Error - “goto was unexpected at this time” When leaving a blank field and just hitting enter - Batch

問題是運行游戲時,如果我將該字段留空,然后按Enter,則窗口將關閉。
在目錄的“命令提示符”窗口中運行游戲(以使其停止關閉)時,我看到上述錯誤消息。
如果輸入了字符,則“無效選擇”“轉到開始”效果很好,這都與空白字段有關。

我有:

  1. 嘗試if not defined goto
  2. 嘗試將變量包含在“”中

但是似乎沒有任何效果!

:start
cls
echo You need to decide NOW, are you going to barricade yourself in (Bug in),
echo or go to somewhere out of town (Bug out)?
echo.
set /p bug=I want to bug 
if %bug%==In goto bugin
if %bug%==Out goto bugout
if %bug%==in goto bugin
if %bug%==out goto bugout
echo.
echo Invalid selection
pause
cls
goto start

如果用戶輸入空白, if語句失敗:

set var=
if %var%==blah Echo BLAH
Rem The above results in :: if ==blah Echo BLAH :: Which will crash CMD

set var=
if "%var%"=="blah" Echo BLAH
Rem The above results in :: if ""=="blah" Echo BLAH :: Which will result in false

因此,將語句括在引號中將導致:

:start
cls
echo You need to decide NOW, are you going to barricade yourself in (Bug in),
echo or go to somewhere out of town (Bug out)?
echo.
set /p bug=I want to bug 
if "%bug%"=="In" goto bugin
if "%bug%"=="Out" goto bugout
if "%bug%"=="in" goto bugin
if "%bug%"=="out" goto bugout
echo.
echo Invalid selection
pause
cls
goto start

哪個應該工作。

莫娜

作為一個額外的建議,使用/ i不區分大小寫的開關,可以用后面的兩行替換這些行,而大小寫無關緊要。

如果“%bug%” ==“在”轉到bugin
如果“%bug%” ==“ Out”轉到bugout
如果“%bug%” ==“ in”轉到Bugin
如果“%bug%” ==“ out”轉到bugout

if /i "%bug%"=="In" goto bugin
if /i "%bug%"=="Out" goto bugout

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM