やりたいこと検索

条件判断でループ処理を行う

 

目次

その他の関連しそうな記事

 

「goto」コマンドとラベルを使ったループ処理

ループ処理と言えば「for」コマンドですが、「for」コマンドではある一定回数のループ処理しかできず、条件判断でのループ処理は行えません。

条件を判断してループを繰り返したり抜けたりするには「goto」コマンドと「if」コマンドを使います

まず、「goto」コマンドとラベルを使ってループ処理を作ったバッチファイル例(goto_loop.bat)を以下に示します。

最終行(14行目)の「goto」コマンドで7行目の「:loop」ラベルまで戻ってループ処理を実現しています。これによって「goto」と「:loop」の間に書かれてある処理が繰り返し実行されることになります。

ここでは、変数「count」に1を足していき、何回目のループかを表示するコマンドを書いています。

このバッチファイルを実行すると無限にループしてしまいますので注意して下さい(下図)。

条件判断でループ処理を行う 「goto」とラベルで作った無限ループ

プログラムが暴走した場合は、「Ctrl+C」キーを押して停止させましょう。

 

「if」コマンドによる条件判断でループを抜ける

次に、「if」コマンドを使ってある条件を満たしたらループを抜けるように前節のバッチファイルを書き換えます。

14行目に「if」コマンドを使って変数「count」が10より大きくなったらループを出るようにコードを加えました。これで、10回目のループでプログラムが終了します。

以下、バッチファイルの実行結果です。

条件判断でループ処理を行う 「goto」と「if」で条件判断ループを作成

これで、条件判断によるループ処理は実現できました。

ただし、次節で紹介するように「if」コマンドをどこに置くかで条件判断ループの性質が変わってきます。この違いを理解して、使い分けることが大切です。

 

2種類のループ処理

条件判断に使用する「if」コマンドですが、ループの末尾に置くか、ループの先頭に置くかでその性質が異なってきます

例として以下のバッチファイルを考えましょう。

条件判断をループ末尾に置いた場合です。変数「count」が10以上になればループを出るような条件になっています。

4行目の「set」コマンドで変数「count」の初期値を「10」に設定していますので、変数「count」はループに入る前に既に10以上です。しかし、条件判断はループ末尾ですので、「echo ここはループ内です」が一度実行されることになります。

以下、実行結果です。

条件判断でループ処理を行う 条件判断をループの末尾に置いた場合

 

次に、条件判断をループ先頭に置いた場合です。

この場合は初めに条件判断が行われますので、「echo ここはループ内です。」の行まで行かずにループが終了します(下図)。

条件判断でループ処理を行う 条件判断をループの先頭に置いた場合

このように、条件判断「if」をどこへ置くかでループ処理の挙動が変化してきます。特に、ループ末尾で条件判断を行う場合は、必ず1回はループ内の処理が行われることに注意して下さい。

Windowsバッチファイル初心者へ向けた入門書を作成しました


Windowsバッチファイル初心者の方へ向けた入門書(PDF)を作成しました。


・初めてWindowsバッチファイルを勉強してみようと思っている方

・使ったことはあるが一から基礎を学び直したい方


へ向けて丁寧な解説を行っています。


「全くプログラムを知らない方でも、この入門書を読んだ後には、Windowsバッチファイルの中級者レベルになれるように」をコンセプトに執筆したものです。


この本を読めば、バッチファイルを使ったファイルやフォルダの操作に関しては一通りのことができるようになります。そうなればもう十分中級者と呼べるレベルですので、あとは自分のやりたいことを実現しようとする中で徐々に知識を蓄えていくだけですぐに上級者へなれるでしょう。


詳しくみる

関連ページ

コメントを残す