【bat】バッチファイルで特定の文字列を含むファイルを別フォルダにコピーする方法

バッチファイルを使用して、特定の文字列をファイル名に含むファイルを検索し、別フォルダにコピーする方法をご紹介します。システム管理やファイル操作の自動化を行う際に便利な技術です。

必要な環境と前提条件

バッチファイルの作成には、Windowsのコマンドプロンプトを使用します。この記事では、基本的なバッチファイルの知識があることを前提としています。

バッチファイルの基本構成

まず、特定の文字列を含むファイルを検索してコピーするバッチファイルの基本構成を確認します。

@echo off
setlocal

rem 検索する文字列
set "search_string=特定の文字列"

rem 検索対象のフォルダパス
set "source_folder=C:\path\to\source\folder"

rem コピー先のフォルダパス
set "destination_folder=C:\path\to\destination\folder"

rem ファイル検索とコピー
for /r "%source_folder%" %%f in (*%search_string%*) do (
    echo Copying "%%f" to "%destination_folder%"
    xcopy "%%f" "%destination_folder%" /i /y
)

endlocal

検索する文字列の設定

search_string 変数に、ファイル名に含まれる特定の文字列を設定します。たとえば、”error” という文字列を含むファイルを検索したい場合は、次のように設定します。

set "search_string=error"

検索対象フォルダとコピー先フォルダの設定

source_folder に検索対象のフォルダパスを、destination_folder にコピー先のフォルダパスを設定します。フォルダパスには絶対パスを使用することをお勧めします。

set "source_folder=C:\logs"
set "destination_folder=C:\logs\filtered"

バッチファイルの実行と動作確認

バッチファイルを実行すると、search_string に設定した文字列を含むファイルが source_folder から destination_folder にコピーされます。動作確認のため、コピー先フォルダをチェックして、該当するファイルが正しくコピーされていることを確認してください。

応用例と注意点

このバッチファイルは、ファイル名に特定の文字列が含まれているかを確認する用途だけでなく、さらに応用が可能です。たとえば、拡張子を指定して特定の種類のファイルだけをコピーしたり、条件に応じて異なる処理を実行することも可能です。

ファイルの拡張子でフィルタリング

特定の拡張子(例:.log)を持つファイルだけを検索対象にする場合、次のように記述します。

for /r "%source_folder%" %%f in (*%search_string%*.log) do (
    xcopy "%%f" "%destination_folder%" /i /y
)

コピー先フォルダが存在しない場合の対処

コピー先フォルダが存在しない場合、バッチファイルで自動的にフォルダを作成することもできます。

if not exist "%destination_folder%" (
    mkdir "%destination_folder%"
)

まとめ

バッチファイルを使えば、特定の条件に基づいてファイルを効率的に操作することができます。今回の方法を活用して、ファイル管理を自動化し、日々の業務をより効率的に行いましょう。