ファイルのリネームをユーザーの指定した様々なルールで実行する。
ユーザー作成のバッチファイルを実行することでファイルのリネームを様々なルールで行います。
元のファイル(引数%1
)と保存先フォルダ(引数%2
)を使いつつ、様々なルールでファイル名を変更して移動するバッチファイルの複数のサンプルです。
これらのサンプルは、ベースとなるエラー処理などは共通化し、ファイル名を決定する部分だけを入れ替えて使用します。
以下のコードをテキストエディタ(メモ帳など)にコピーし、例えば copy_and_rename.bat
のような名前で読み書き可能なフォルダーに保存します。ファイルの文字コードは ANSI を推奨します。
作成したバッチファイル(copy_and_rename.bat) は「クラウド対応自動印刷」の「設定」→「プリンター/処理」→「.Batchファイルを実行する」→「詳細」で選択します。 → 参考サイト
## ベースとなるバッチファイル (リネーム処理部分をカスタマイズ)
まずは共通となる基本構造です。この中の「rem --- 新しいファイル名をここで設定 ---
」の部分を、後述する各パターンのコードに置き換えることで、様々なリネームを実現できます。エラーは error.log に記録されます。
【基本構造】 copy_and_rename.bat
@echo off
setlocal enabledelayedexpansion
rem --- 引数チェック ---
echo "%~1"
echo "%~2"
if "%2"=="" (
set "errmsg=エラー: 引数が不足しています。元のファイルと保存先フォルダを指定してください。"
goto :error_handler
)
if not exist "%1" (
set "errmsg=エラー: 元のファイルが見つかりません。 PATH: "%1""
goto :error_handler
)
rem --- 元のファイルパスから、ファイル名と拡張子を抽出 ---
set "original_filename=%~n1"
set "original_extension=%~x1"
rem -----------------------------------------------------------------
rem --- ▼▼▼ ここからリネームルール ▼▼▼ ---
rem
rem ここに後述する各パターンのコードを挿入します。
rem (例: ファイル名の先頭に日付を追加)
set "yy=%date:~0,4%"
set "mm=%date:~5,2%"
set "dd=%date:~8,2%"
set "new_filename=%yy%%mm%%dd%_!original_filename!"
rem
rem --- ▲▲▲ ここまでリネームルール ▲▲▲ ---
rem -----------------------------------------------------------------
rem --- ファイルをコピー&リネーム ---
set "new_filepath=%2\!new_filename!!original_extension!"
echo.
echo 元のファイル: "%1"
echo 新しいファイル: "!new_filepath!"
echo.
copy "%1" "!new_filepath!" > nul 2>> "%2\error.log"
rem --- 処理結果を判定 ---
if %errorlevel% equ 0 (
echo 正常に処理が完了しました。
) else (
echo エラーが発生しました。詳細は "%2\error.log" を確認してください。
)
goto :eof
:error_handler
rem --- エラー発生時の処理 ---
echo %date% %time% %errmsg% >> error.log
echo %errmsg%
goto :eof
ターミナル(コマンドウインドウ)でのテスト実行方法: move_and_rename.bat "元のファイル" "保存先フォルダ"
### リネームルールのサンプルパターン
上記の基本構造の「▼▼▼ ここからリネームルール ▼▼▼
」の部分に、以下のコードブロックを挿入して使用してください。
1. ファイル名の先頭に現在の日付 (YYYYMMDD) を追加
例: report.txt
→ 20250911_report.txt
rem --- 新しいファイル名をここで設定 (日付接頭辞) ---
set "yy=%date:~0,4%"
set "mm=%date:~5,2%"
set "dd=%date:~8,2%"
set "new_filename=%yy%%mm%%dd%_!original_filename!"
2. ファイル名の末尾に現在の日付 (YYYYMMDD) を追加
例: report.txt
→ report_20250911.txt
DOS
rem --- 新しいファイル名をここで設定 (日付接尾辞) ---
set "yy=%date:~0,4%"
set "mm=%date:~5,2%"
set "dd=%date:~8,2%"
set "new_filename=!original_filename!_%yy%%mm%%dd%"
💡 ヒント:
set "today=%date:/=%"
とすると日付の/
を削除できるので、set "new_filename=!original_filename!_%today%"
のようにシンプルに書くこともできます。
3. ファイル名に含まれる特定の文字列を置換
例: sales_report_old.xlsx
→ sales_report_new.xlsx
rem --- 新しいファイル名をここで設定 (文字列置換) ---
set "old_str=old"
set "new_str=new"
set "new_filename=!original_filename:%old_str%=%new_str%!"
- **
old_str
とnew_str
**の値を自由に変更してください。
4. 拡張子を変更する
例: document.txt
→ document.bak
このパターンのみ、基本構造のリネームルール部分とファイル移動部分の両方を変更する必要があります。
▼リネームルール部分
rem --- 新しいファイル名をここで設定 (拡張子変更) ---
set "new_filename=!original_filename!"
set "new_extension=.bak"
- **
new_extension
**の値を好きな拡張子(ドット.
を含む)に変更してください。
▼ファイル移動部分 基本構造のset "new_filepath=..."
の行を以下のように変更します。
set "new_filepath=%~2\!new_filename!!new_extension!"
5. ファイル名を完全に新しい名前に変更 (固定)
例: anyfile.zip
→ archive_data.zip
rem --- 新しいファイル名をここで設定 (固定名) ---
set "new_filename=archive_data"
- **
archive_data
**の部分を好きなファイル名に変更してください。拡張子は元のまま引き継がれます。
6. ファイル名の先頭に連番を振る (フォルダ内のファイル数から計算)
例: photo.jpg
をimages
フォルダへ移動 → images
フォルダに既に3つのファイルがあれば 004_photo.jpg
にリネーム
rem --- 新しいファイル名をここで設定 (連番) ---
rem 移動先フォルダ内のファイル数を数える
set count=0
for %%f in ("%~2\*") do (
set /a count+=1
)
set /a count+=1
rem 3桁のゼロ埋め
set "num=000!count!"
set "num=!num:~-3!"
set "new_filename=!num!_!original_filename!"
これらのサンプルを組み合わせることで、さらに複雑なリネーム処理も可能です。