【bat】バッチファイルでファイルの存在有無により処理を行う

バッチファイル

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

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

ファイルの有無により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をコピーしました