ちわー、ブレインキャットです。
バッチ内に書いたコードって上から順に動いていくのですが、あるコマンドを使用すると特定のコードをすっ飛ばすことができます。
今回はそんなコマンドについて勉強していこうと思います!
どんなコマンドを使用するのか。
それは「goto」コマンドと「ラベル」です。
NARUTOでいう四代目火影の瞬身のじゅ・・・
「goto」と「ラベル」の使い方
「goto」コマンドはこのような書き方で書きます。
1 | goto :ラベル |
ラベルについてはこんな感じで書きます。
1 | :ラベル |
ではこれをもとに実際のコードを書いていきましょう。
1 2 3 4 5 6 7 8 9 10 11 | @echo off goto:jump echo ココを表示したくない1 :jump echo ココを表示したい1 pause |
書いてみました!
では実行してみます。
表示できました!!
もうちょっと複雑に書いてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | rem main.bat @echo off goto:jump echo ココを表示したくない1 :jump2 echo ココを表示したい1 :jump echo ココを表示したい1 goto jump2 pause |
書いてみました!
さてさてポチっ!
・・・
ぎゃあああああああ
無限に「ココを表示したい1」, 「ココを表示したい2」が表示され続けています!!!!
無理やり止めました。
さてさて、なぜこんなことになったのか・・・
まぁ簡単なんで皆さんすぐわかると思いますが、見ていきましょう。
今回書いたコードです。
流れとしては
黒色のやじるしである「goto jump」で「jump」ラベルまで飛び、「ココ表示したい1」を表示しました。
次に、 「goto jump2」で「jump2」ラベルまで飛び、「ココ表示したい2」を表示しました。
次に、下に行き「jump」ラベルを超え「ココ表示したい1」を表示しました。
次に、 「goto jump2」で「jump2」ラベルまで飛び、「ココ表示したい2」を表示しました。
次に、下に行き「jump」ラベルを超え「ココ表示したい1」を表示しました。
次に。。。
無限ループって怖くね?
そんな時に使えるラベルを次に学んでいきましょう。
:eof
「eof」って何か分かりますか?
そうです。「end of file」です。
「goto」コマンドでこいつを指定すれば、全部すっ飛ばして最後まで行ってくれます。べんり
では書いてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | rem main.bat @echo off goto:jump echo ココを表示したくない1 :jump2 echo ココを表示したい2 goto:eof :jump echo ココを表示したい1 goto jump2 pause |
では実行してみましょう。
今まではバッチをダブルクリックで起動していましたが、「eof」 は「pause」コマンドもすっ飛ばして終わるので、コマンドプロンプトからバッチを実行してみます。
ってわけでうまく動きました。
終わり!