[英]Error - “goto was unexpected at this time” When leaving a blank field and just hitting enter - Batch
問題是運行游戲時,如果我將該字段留空,然后按Enter,則窗口將關閉。
在目錄的“命令提示符”窗口中運行游戲(以使其停止關閉)時,我看到上述錯誤消息。
如果輸入了字符,則“無效選擇”“轉到開始”效果很好,這都與空白字段有關。
我有:
if not defined
goto
但是似乎沒有任何效果!
: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.