2016-09-27 20 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 

を追加します。これにより、ユーザーがキーを押すまでバッチファイルが閉じないようになります。

関連する問題