バッチファイルでファイルの存在有無により処理を分岐する

バッチファイル

バッチファイルで作業を自動化する際、あるファイルが存在する場合、しない場合の処理を記述することは、よくあります。本記事では、バッチファイル内でファイルの存在確認をする方法を紹介します。

ファイル存在確認のサンプルコード

ファイルの有無により1コマンド実行(シンプル)

ファイルあり

if exist でファイルの存在確認ができます。直後にコマンドを1つ書けます。

@echo off
rem ファイル名を変数に設定
set FILENAME=example.txt

rem ファイルが存在する場合のみコマンドを実行
if exist %FILENAME% echo File exists.

ファイルなし

上記サンプルのif文を not exist とすることで逆の判定にできます。

@echo off
rem ファイル名を変数に設定
set FILENAME=example.txt

rem ファイルが存在する場合のみコマンドを実行
if not exist %FILENAME% echo File exists.

ファイルが存在する/しない場合に複数コマンドの処理を実行(括弧でまとめる)

if exist でファイルの存在確認を行い、その後の括弧で処理をまとめることができます。
ファイル存在なしを先に判定したい場合は if not exist と記述します。
else以降を省略することも出来ます。

@echo off
rem ファイル名を変数に設定
set FILENAME=example.txt

rem ファイルが存在するか確認
if exist %FILENAME% (
    rem ファイルが存在する場合の処理
    echo File exists.
) else (
    rem ファイルが存在しない場合の処理
    echo File does not exist.
)

ファイルが存在する場合に複数コマンドの処理を実行(gotoを使用)

if not exist でファイルが「無い」ことを確認します。
ファイルが無い場合は処理を行わないようgoto文でバッチファイル末尾までジャンプします。
if文の論理が逆転する点について注意が必要です。
ファイルがある場合:if not exist ~ goto Label
ファイルがない場合:if exist ~ goto Label

@echo off
rem ファイル名を変数に設定
set FILENAME=example.txt

rem ファイルが存在しない場合はgoto文でジャンプ。存在する場合は以下の処理を行う
if not exist %FILENAME% goto FileNotExistLabel
    rem ファイルが存在する場合の処理
    echo File exists.

rem ファイルが存在しない場合はgotoでココに飛んでくる
:FileNotExistLabel

まとめ

本記事では、バッチファイルでファイルの存在有無により処理を分岐する方法を紹介しました。

タイトルとURLをコピーしました