2016-04-21 26 views
1

最近、私はバッチファイルの学習を始めました。今日、私はバッチファイルを試してみることにしました。私はいくつかのエラーがあり、コードに何が間違っているのか分からない。 HERESにコード:バッチファイルコードとの混乱

@echo off 
title Batch Rpg 
color 07 

echo Welcome to Batch Rpg! 
echo. 
echo. 
pause 

:menu 
cls 
echo. 
echo -Menu- 
echo. 
echo. 
echo. 
echo 1) Begin 
echo. 
echo 2) How to play 
echo. 
echo 3) Exit 
echo. 
echo. 
echo. 
echo --------- 
echo. 
    set /p c=Choice: 
     if %c%==1 goto prestart1 
     if %c%==2 goto howtoplay 
     if %c%==3 goto cfr_exit 
     if NOT %c%==1 if NOT %c%==2 if NOT %c%==3 goto menu 


:cfr_exit 
cls 
echo. 
echo Are you sure you want to exit? 
echo. 
    set /p c=(Y/N): 
     if %c%=="Y" exit 
     if %c%=="N" goto menu 
     if NOT %c%=="Y" if NOT %c%=="N" goto cfr_exit2 

:cfr_exit2 
cls 
echo. 
echo You must enter a valid option. 
echo. 
pause 
goto cfr_exit 

:howtoplay 
cls 
echo. 
echo -How to play- 
echo. 
echo. 
echo. 
echo This game is very simple. There will be a number with an option after it, type the option in and it will perform an action(As the option would say). 
echo. 
pause 
goto menu 

:prestart1 
cls 
echo. 
echo Welcome to land of Fageryth! 
echo. 
echo What is your name, adventurer? 
echo. 
    set /p playername=Name: 
goto prestart2 

:prestart2 
cls 
echo. 
echo What would be your more valued statistic, Attack damage, or Hit points? 
echo. 
echo. 
echo. 
echo 1)Attack damage(Atk) 
echo. 
echo 2)Hit points(Hp) 
echo. 
echo. 
echo. 
echo --------- 
echo. 
    set /p playermorevaluedstat=Choice: 
     if %playermorevaluedstat%==1 
      set playeratk=6 
      set playerhp=25 
     if %playermorevaluedstat%==2 
      set playeratk=4 
      set playerhp=30 
     if NOT %playermorevaluedstat%==1 if NOT %playermorevaluedstat%==2 goto prestart2 
cls 
echo playeratk 
echo playerhp 
pause 

私は私のコードの:prestart2セクションとのトラブルを抱えています。最後に、変数がオプションである1または2に等しくなければ、セクションの開始までプレーヤーを戻し、終了したら私はそれが2つの変数playeratkplayerhpを表示するようにしようとしていますが、代わりにそれは閉じます。私はここで本当に失われており、助けに感謝します!

+0

なぜこのような複雑なロジックですか? "%playermorevaluedstat%" == "1"(他のものを実行する)ならば、他のものを実行するために、 '%' playermorevaluedstat% "==" 2 " '他の何かをする)'; '%playermorevaluedstat%'が空の場合のトラブルを避けるために、比較式の前後に '' "を書きます。 'if /' elseの句の正確な構文を見つけるために 'if /?'のヘルプテキストを読んでください... – aschipfl

答えて

2

カップルの事は、私たちは始める前に:あなたのバッチスクリプトをトラブルシューティングする際、あなたはそれが間違って起こっている場所を見ることができるように

まず、あなたのecho offcls行(コメントアウト)を取り除きます。

第2に、変数を設定して比較する際に間違いなくスペースを含めないように、変数を二重引用符で囲む必要があります。実際にあなたのコード内の問題を引き起こしていないようですが、に入るために良い習慣です:

set "var1=something" 
set "var2=a string with spaces" 
if "%var1%"=="something" echo %var1% 

今、あなたのコードに問題が複数行に伸ばし2つのif文です。もしあなたがそれをやろうとするなら、それらをかっこの中に入れなければなりません。

set /p playermorevaluedstat=Choice: 
     if %playermorevaluedstat%==1 (
      set playeratk=6 
      set playerhp=25 
      ) 
     if %playermorevaluedstat%==2 (
      set playeratk=4 
      set playerhp=30 
      )