ファイルの存在チェック

にメンテナンス済み

ファイルやフォルダの存在確認は、バッチファイルで前提条件を確認するときによく使います。

コピーや削除の前に存在確認を入れておくと、エラーの原因が分かりやすくなります。

基本コマンド

if exist コマンド

コマンドプロンプトにはファイルの存在確認だけを行う専用コマンドはなく、if exist 構文を使って存在確認を行います。

このコマンドは、指定したファイルやフォルダが存在するかどうかをチェックし、存在する場合に特定の処理を実行します。

if exist "パス" (
  rem ファイルが存在する場合の処理
)
パスはダブルクォートで囲む

パスに空白が含まれる可能性があるため、if exist "%file_path%" のようにダブルクォートで囲むのが安全です。

具体的に、テキストファイルが存在するかどうかを確認する例を見てみましょう。

以下のコードでは、ユーザーのドキュメントフォルダにある sample.txt ファイルが存在するかどうかを確認しています。

set "file_path=%USERPROFILE%\Documents\sample.txt"

if exist "%file_path%" (
    echo ファイルは存在します。
) else (
    echo ファイルは存在しません。
)

また、以下のコードでは、ファイルの存在有無に応じて変数に値を格納する例を示しています。

set "file_path=%USERPROFILE%\Documents\sample.txt"

if exist "%file_path%" (
    set file_exist=true
) else (
    set file_exist=false
)

if %file_exist%==true (
    echo ファイルは存在します。
) else (
    echo ファイルは存在しません。
)

一度変数に格納することによって、ファイルの存在有無のチェックと後続する処理を分けて記述することができます。

フォルダの存在確認にも使える

if exist はファイルだけでなくフォルダの存在確認にも使えます。フォルダかどうかを分かりやすく示したい場合は、末尾に \ を付けて書くと読みやすくなります。

if exist "%USERPROFILE%\Documents\" (
        echo Documents フォルダは存在します。
)

実践的な使用例

バッチファイルでの応用

バッチファイルを使用することで、ファイルの存在確認を自動化することができます。 以下は、指定したファイルが存在する場合に特定の処理を実行するバッチファイルの例です。

@echo off
setlocal

set "file_path=%USERPROFILE%\Documents\sample.txt"

if exist "%file_path%" (
    echo %file_path% は存在します。
    rem ここに存在する場合の処理を記述
) else (
    echo %file_path% は存在しません。
    rem ここに存在しない場合の処理を記述
)

pause
endlocal

@echo offについての詳細は、以下のページを参照してください。

このバッチファイルを実行することで、結果に応じた処理が自動的に実行されます。

バリデーション処理

特定のファイルが存在することを前提とした処理を行う場合、バリデーション処理を行うことが重要です。

以下のコードは、2 つのファイルが存在するかどうかを確認し、いずれも存在する場合に特定の処理を実行する例です。

@echo off
setlocal

set "file1=%USERPROFILE%\Documents\file1.txt"
set "file2=%USERPROFILE%\Documents\file2.txt"

if not exist "%file1%" (
    echo %file1% は存在しません。
    exit /b 1
)
if not exist "%file2%" (
    echo %file2% は存在しません。
    exit /b 1
)

rem ここにファイルが存在する場合の処理を記述

pause
endlocal

このスクリプトでは、file1file2 それぞれの存在を確認し、結果に応じて異なる処理を行います。

まとめ

コマンドプロンプトを使用して、指定したファイルが存在するかどうかを確認する方法について解説しました。if exist コマンドを使えば、簡単にファイルの存在確認が可能です。 バッチファイルや複雑なスクリプトを作成することで、条件付き処理やエラーハンドリングを行うことも可能です。 これらの方法を活用することで、より効率的なファイル管理が実現できます。

関連記事

#コマンドプロンプト #バッチファイル #条件分岐