2017-01-06 6 views
0

私は、テキストベースのゲームの親のための子バッチファイルに取り組んでいます。私は、教授の指示に従って、if not文を使用する必要があります。私は、ユーザーが選択した後に "Y"以外のものを選択した場合、プログラムが終了するところまで行きたいと思っています。私は 'exitでないなら'と 'y == y exitでないなら'を使ってみましたが、プログラムは選択した入力に関係なく、親バッチファイルにループバックします。IfとIf notコマンドのWindowsバッチ利用

if if exitステートメントが常にプログラムを終了することを保証するにはどうすればよいですか?注:プログラムは、デスクトップから

:: Child Batch File 
@echo off 
Title Halloween...... 
color 06 
echo set speech = wscript.Createobject("SAPI.spvoice") >> "temp.vbs" 
set text=You cannot kill the boogie Man! 
echo speech.speak "%text%" >> "temp.vbs" 
start temp.vbs 
pause 
del temp.vbs 
Echo Another Round?? 
Pause 
cls 
Choice 
if y==y call scarymovie.bat 
if not goto exit 
:exit 

親バッチファイルを実行している:それはどのように動作するか

@Echo Off 
Title Slim Shady - Scary Movie 
color 04 
:start 
set /a counter+=1 
Echo You Have Run This Program %counter% times 
Echo %counter% >> answers.txt 
Echo Greetings Traveler, Scrawl Your Name Across The Screen 
set /p name= 
Echo %name% >> answers.Txt 
Echo What's Your Favorite Scary Movie?? 
Pause 
cls 
Echo Press 1 for Halloween 
Echo Press 2 for The Exorcist 
Echo Press 3 for I Doesn't Afraid No Ghost 
set /p movie= 
Echo %movie% >> answers.txt 
if %movie%==1 call Halloween.bat 
if %movie%==2 call Exorcist.bat 
if %movie%==3 Start www.SesameStreet.org 
Pause 
Cls 
+0

Y == Yは常に評価するために起こっている:)何かが不明である場合は質問をお気軽に本当に。 https://en.wikipedia.org/wiki/Choice_(command)#Syntax –

+0

親スクリプトでset/pを使用する理由は何ですか? 選択肢をset/p again =に置き換えた後、 IF NOT%再び%== y exit/b –

+0

ありがとうございました。 – CutAndJack

答えて

0
if y==y call scarymovie.bat 
if not goto exit 

これではありません...あなたはif notで意味の事はelseです。
共通の構文は次のとおりです。

if %variable%==value (
echo true 
) else (
echo false 
) 

notは唯一の「ないはなく、変数のものが、この値はあります」のような条件を否定するために使用されます。スクリプトでさらに

if not %variable%==value (
echo not value 
) 

あり到達不可能なコード:

if y==y call scarymovie.bat 

は常に@Jeとして評価されますffBlockはコメントに記載されています。選択コマンドの結果を確認するための正しい方法は、ERRORLEVELの値をチェックすることです:

choice 
Goto label%errorlevel% 
:label0 
echo Y 
Goto nextStep 
:label1 
echo N 
Goto nextStep 

+0

ああ、私は、エラーレベルについての手掛かりはないと思う。私は、もし私が達成しようとしていたことのために私の頭を包み込むのはずっと簡単です。うまくいけば、私たちは今日のクラスで選択肢をカバーします:)。助けてくれてありがとう! – CutAndJack

+0

あなたは歓迎です:)もし私の答えが役に立っていて、あなたの問題を解決したら、答えの横にある灰色のチェックマークをクリックして問題を受け入れることを検討してください。これは、サイトをきれいに保つだけでなく、あなたに報酬を与えるのに役立ちます:) – geisterfurz007