【Windows】バッチ(bat)で複数ファイルを存在チェックする方法

ファイルが存在しているかチェックしたいシーンがあります。
例えばデータの整理や管理、バックアップや復元、プログラミング処理の事前チェックなどです。
今回はif existを使ってファイルの存在チェックをしたいと思います。
複数ファイル対応です。

目次

対象ファイルが存在するかチェックする

if exist 文は、指定されたファイルまたはディレクトリが存在するかどうかを確認するために使用されます。
基本的な構文は次のようになります

if exist ファイルパス (
    実行するコマンド
)

今回は、バッチファイルの存在するディレクトリ以下で、指定されたファイルが存在するか調べてみたいと思います。

check_file_existence.batとしてバッチファイルを作成し、次をコピペします。

@echo off

set "file_paths=test1.7z"

echo search for next file:
for %%A in (%file_paths%) do (
    echo %%A
)

echo search results:
for /r %%G in (%file_paths%) do (
    if exist "%%~G" (
        echo "%%~G" exist
    )
)

pause

set "file_paths=test1.7z"が、見つけたい対象ファイルを指定する部分です。
今回は「test1.7x」を検索します。
次の環境で実行してみます。

existing.bat
subfolder1
subfolder2
└─test1.7z
test.7z


同じ階層にはよく似た別のファイルを置いています。
サブフォルダが2つあり、1つは空、もう1つに正解のファイルが入っています。
果たして想定通りに見つけられるでしょうか?
実行結果がこちらです。



無事、指定ファイルを見つけることができました。
ちなみに、見つからなかった場合のレスポンスは空になります。

こんな感じです。
search resultsの結果が何も無い表示となります。
サンプルコードを改変すれば、結果なしのレスポンス追加も可能です。

複数の対象ファイルが存在するかチェックする

次は複数ファイルを指定してチェックしたいと思います。
実は先ほどのソースコードは複数ファイルでも単ファイルでも対応できるようにしてありました。

@echo off

set "file_paths=test1.7z test2.7z test3.7z"

echo search for next file:
for %%A in (%file_paths%) do (
    echo %%A
)

echo search results:
for /r %%G in (%file_paths%) do (
    if exist "%%~G" (
        echo "%%~G" exist
    ) 
)

pause

変わったのはこの部分です。
set "file_paths=test1.7z test2.7z test3.7z"

file_paths変数に指定したい複数のファイルを割り当てています。

このサンプルを次の環境で実行してみます。

check_multiple_files_existence.bat
subfolder
└─test1.7z
test2.7z
test3.7z

バッチファイルを実行するとこのようになります。

無事、指定した3つのファイルを見つけることができました。
よく似た別のファイルとも間違わずに検出できています。
また、サブフォルダーにあるファイルも見つけることができました。

ということで、今回はWindowsバッチ(bat)で複数ファイルが存在してるかチェックする方法をご紹介しました。
ファイルが存在するかどうかを確認し、
必要に応じてエラーメッセージを出すなどの適切な処理を行えるるようになります。
また、もっとシンプルにデータの整理や管理にも役立ちます。
手続きや資料向けに必要データのチェックができます。
バックアップや復元用途にも、ファイルの存在をチェックして処理を分岐する、などの使い方ができます。
応用範囲が広いです、是非試してみてはいかがでしょうか。

今回は以上となります。
本記事が少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次