目次
その他の関連しそうな記事
ファイルが存在している場合にのみコマンドを実行する
バッチファイルではファイルの存在を確認して、ファイルが存在していれば指定したコマンドを実行し、存在していない場合は何もしないということが可能です。それには、以下のようなコマンドを用います。
1 |
if exist [ファイル名] [コマンド] |
「ファイル名」には存在を確認したいファイル、「コマンド」にはファイルが存在している場合に実行したいコマンドが入ります。
例えば、「file.txt」ファイルが存在している場合に、「ファイルが存在しています。」というメッセージをコマンドプロンプト上に表示するバッチファイル「if_exist_file_echo.bat」は以下のようになります。
1 2 3 |
@echo off if exist file.txt echo ファイルが存在しています。 |
以下、同じフォルダに「file.txt」ファイルが存在しているときの実行結果です。
もちろん、このバッチファイルは「file.txt」が存在しないときには、何も表示されません。
次に、ファイルが存在しない場合も何らかのコマンドを実行したいときには、「else」文を付け足すことができます。それは、以下のように書けます。
1 2 3 4 5 |
if exist [ファイル名] ( [コマンド(ファイルが存在するとき)] ) else ( [コマンド(ファイルが存在しないとき)] ) |
例えば、「if_exist_file_echo.bat」を改良して、ファイルが存在しない場合にも「echo」コマンドでメッセージを出力する場合は以下のようなバッチファイルになります(if_exist_file_echo2.bat)。
1 2 3 4 5 6 7 |
@echo off if exist file.txt ( echo ファイルが存在しています。 ) else ( echo ファイルが存在しません。 ) |
以下、ファイルが存在したときと、しない場合の出力結果です。
ファイルが存在している場合にファイルを削除する
この「if exist」文をよく使用するのは、「ファイルがあるときだけそのファイルを削除する」というときです。ファイルの削除は「del」コマンドで行えますが、もし存在しないファイルを削除しようとすると、以下のような警告が表示されます。
警告がでるだけで、特にプログラム上は問題ないのですが、この警告を嫌う場合によく「if exist」文が用いられます。つまり、ファイルがあるときだけ「del」コマンドを実行すればよいので、以下のように書きます。
1 2 3 |
@echo off if exist file.txt del file.txt |
このように、すればファイルが存在しない場合は「del」コマンドは実行されないので、警告も出ません。この形が「if exist」文が最も使われる形と言ってもいいでしょう。
ファイルが存在していない場合にのみコマンドを実行する
今度は逆に、ファイルが存在しない場合にのみコマンドを実行します。それには、「if」と「exist」の間に「not」を挿入して、
1 |
if not exist [ファイル名] [コマンド] |
とします。「ファイル名」に指定したファイルがないときにだけ、コマンドが実行されます。
もちろん、「else」文も追加することができ、以下の文法も使用可能です。
1 2 3 4 5 |
if not exist [ファイル名] ( [コマンド(ファイルが存在しないとき)] ) else ( [コマンド(ファイルが存在するとき)] ) |
以下のバッチファイルは、ファイルが存在するときとしないときの「echo」コマンドによる出力メッセージを変化させた例です(if_not_exist_file_echo2.bat)。
1 2 3 4 5 6 7 |
@echo off if not exist file.txt ( echo ファイルが存在しません。 ) else ( echo ファイルが存在しています。 ) |
このバッチファイルをファイルが存在しないとき、そして存在するときと連続で実行した結果を以下に示します。