2016-09-27 71 views
1

所以我對編碼相對比較陌生,而且我似乎無法在我的這段代碼中發現語法錯誤。每當菜單加載時,我按1,它會關閉並閃爍一個快速錯誤,表示存在syantax錯誤。如果你們可以幫我找出造成這個問題的原因。順便說一句,這是一個基於文本的RPG。沒有法官:)在批處理文件中找不到語法錯誤

@echo off 
TITLE VICTIMQUEST =-= RETRO EDITION 
setlocal enabledelayedexpansion 

:menu 
color 0a 
cls 
echo. 
echo VICTIMQUEST =-= RETRO EDITION 
echo. 
echo 1) Begin 
echo 2) Exit 
echo. 
set /p c=C:\ 

if "%c%" == "1" goto new 
if "%c%" == "2" exit 
goto menu 

:new 
set health=100 
set monsterhealth=30 
set playerdmg=7 
set monsterdmg=3 
goto home 

:home 
cls 
echo You sit in your nice, cozy cabin... 
echo ---------------------- 
echo Nothing you need to worry about. 
echo. 
echo 1) FIGHT! 
echo 2) Quit :| 
echo. 
set /p c=C:\ 

if "%c%" == "1" goto encounter1 
if "%c%" == "2" goto menu 
goto home 

:encounter1 
cls 
echo You: %health% 
echo. 
echo 1) Attack 
echo 2) Run away 
echo. 
set /p c=C:\ 

if "!c!" == "1' goto attack1 
if "!c!' == "2" goto home 
goto encounter1 

請幫忙。謝謝!

+3

1.如果您打開命令提示符窗口並從那裏運行腳本,則會看到確切的錯誤消息,而控制檯窗口不會消失。 (如果你臨時刪除'@echo off'行,你應該看到問題出在哪裏。)2.試着寫一些不重要的代碼,就像'.bat' /'.cmd'腳本一樣痛苦。你爲什麼不學習像Python這樣好的腳本語言? – jamesdlin

回答

1

我應該提醒你,電腦對標點符號非常挑剔。

"!c!" == "1'"!c!' == "2"將永遠不會工作。

|字符有特殊的含義,所以你不能使用它,除非你用^轉義它,或者你把它和其他東西放在雙引號中。

3

3點的變化:

  1. REM @echo off - 回聲應該是在調試或者你盲目飛行
  2. 管道符|是一個特殊的字符,必須用^轉義。

    echo 2) Quit :^| 
    
  3. 不正確的引號。需要成爲一個雙引號。

    if "!c!" == "1" goto attack1 
    
1

添加

pause >nul 

到您的批處理文件的末尾。這將使得批處理文件在用戶按下某個鍵之前不會關閉。