バッチファイルで自動処理を行う際、特定のファイルが存在するかどうかを確認して処理を分けたい場面はよくあります。例えばログファイルがある場合だけ追記する、設定ファイルがなければ新規作成する、といったケースです。本記事では「ファイルの存在チェック」と「if文による条件分岐」の基本から応用までを解説します。
基本的な存在チェック
バッチファイルでは if exist
を使ってファイルの有無を判定します。ファイルが存在する場合と存在しない場合で処理を分岐させられます。
@echo off
setlocal
if exist "C:\test\sample.txt" (
echo ファイルが存在します
) else (
echo ファイルが存在しません
)
endlocal
pause
拡張子やパターンを使ったチェック
ワイルドカードを利用すれば、ディレクトリ内に特定の拡張子のファイルが存在するかどうかを判定できます。
@echo off
if exist "C:\logs\*.log" (
echo ログファイルが存在します
) else (
echo ログファイルはありません
)
pause
ディレクトリの存在チェック
ファイルだけでなくフォルダの存在も if exist
で確認できます。末尾にバックスラッシュを付けると意図が明確になります。
@echo off
if exist "C:\backup\" (
echo バックアップフォルダが存在します
) else (
echo バックアップフォルダがありません
)
pause
処理の条件分岐
ファイルの有無によって実際の処理を切り替える例です。存在すれば読み込み、なければ新規作成するように分岐させます。
@echo off
set "file=C:\data\config.ini"
if exist "%file%" (
echo 設定ファイルを読み込みます...
type "%file%"
) else (
echo 設定ファイルを新規作成します...
echo [default] > "%file%"
)
pause
エラー処理への応用
存在チェックを組み合わせれば、エラーを回避したり、処理の安全性を高められます。例えばコピーや削除の前に存在を確認してから実行すると、スクリプトが途中で止まることを防げます。
@echo off
set "src=C:\temp\input.txt"
set "dst=C:\work\input.txt"
if exist "%src%" (
copy "%src%" "%dst%"
echo コピー完了
) else (
echo コピー元のファイルがありません
)
pause
まとめ
バッチファイルでファイルの存在チェックを行うには if exist
を使います。単一ファイルだけでなくワイルドカードやディレクトリにも対応可能で、条件分岐と組み合わせれば柔軟な処理を記述できます。コピーや削除などでエラーを防ぐためにも、存在チェックを取り入れるのが実用的です。