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

バッチファイル

バッチファイルで作業を自動化する際、指定されたフォルダが存在する場合、しない場合で処理を分岐することは、よくあると思います。本記事では、バッチファイル内でフォルダの存在確認をする方法を紹介します。

フォルダ存在確認のサンプルコード

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

フォルダあり

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

@echo off
rem フォルダ名を変数に設定
set FOLDERNAME=exampleFolder

rem フォルダが存在する場合のみコマンドを実行
if exist %FOLDERNAME% echo Folder exists.

フォルダなし

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

@echo off
rem フォルダ名を変数に設定
set FOLDERNAME=exampleFolder

rem フォルダが存在する場合のみコマンドを実行
if not exist %FOLDERNAME% echo Folder exists.

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

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

@echo off
rem フォルダ名を変数に設定
set FOLDERNAME=exampleFolder

rem フォルダが存在するか確認
if exist %FOLDERNAME%\ (
    rem フォルダが存在する場合の処理
    echo Folder exists.
) else (
    rem フォルダが存在しない場合の処理
    echo Folder does not exist.
)

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

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

@echo off
rem フォルダ名を変数に設定
set FOLDERNAME=exampleFolder

rem フォルダが存在しない場合はgoto文でジャンプ。存在する場合は以下の処理を行う
if not exist %FOLDERNAME% goto FolderNotExistLabel
    rem フォルダが存在する場合の処理
    echo Folder exists.

rem フォルダが存在しない場合はgotoでココに飛んでくる
:FolderNotExistLabel

まとめ

本記事では、バッチファイル内でフォルダの存在確認をする方法を紹介しました。

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