画像など大量のファイルをWindowsパソコンで管理するとき、ファイル名に一括で連番を付けたいことってありますよね。
特にデジカメで撮影した写真(JPEGファイル)をパソコンで保管しておくとき、ファイル名を「日付_連番.jpg」に一括変更したいと感じたことはありませんか?
今回は「簡単に変更できる」かつ「綺麗に連番を付ける」方法として、筆者が作成したファイル名一括変更ツール(Windowsバッチ)を用いる方法を紹介します。
目次
1.当ツールで出来ること
当ツールで出来ること(ツールの仕様)としては、
①ひとつのフォルダ内に格納したファイル全部を一括でファイル名変更する(サブフォルダ除く)
②ファイル名の頭に日付などの固定値、その後に3桁の連番を付ける(例:161103_001.jpg)
③対象拡張子(.jpgや.pngなど)を指定可能(ワイルドカード指定で全拡張子対象にもできる)
当ツールはダブルクリックして「固定値」「連番初期値」「対象拡張子」を入力してEnterするだけ。
当手順を読みながらでも初回実行まで5分程度でできる簡単なものです。
2.ツール取得方法と初期設定
まずは初回作業として、筆者が用意したツールをダウンロードします。
(もしインターネット掲載ツールの利用が怖い場合は、掲載したソースコードをファイル化していただいても構いません)
特別な知識や事前インストールは不要で、Windowsのパソコンであれば誰でも利用可能です。
ファイル名一括変更ツール
・ファイル名一括変更ツール.bat
(1)ソースコードをコピーする
筆者が作成した以下のソースコードをコピーします。
全体をマウスで範囲選択し、右クリック後に「コピー」をクリックします。
@echo off
setlocal enabledelayedexpansion
:---------------------------------------------------
:---ユーザー初期値(利用者にて値を変更して保存可能)
:---------------------------------------------------
:--- 撮影年月日(ここに入れた文字を撮影年月日とする / 値を"実行時に入力"にすると実行時入力式)
set DATETIME=実行時に入力
:--- 撮影年月日の後文字(ここに入れた文字を撮影年月日の後に入れる / 初期値はアンダーバーにしている)
set DTSUFFIX=_
:--- 連番初期値(ここに入れた数字を起点に連番を振る / 値を"実行時に入力"にすると実行時入力式)
set NUMSTART=実行時に入力
:--- 連番桁数(値1にすると1,2,3 値2にすると01,02,03 値3にすると001,002,003と連番を振る / 値3を推奨)
set NUMDIGIT=3
:--- 変換前拡張子(ここに入れた拡張子を対象に名前変換する / 値を"実行時に入力"にすると実行時入力式)
set EXTENMAE=実行時に入力
:--- 変換後拡張子(ここに入れた拡張子に名前変換 / 値を"変換前と同じ"にすると変換前と同じ拡張子に変換)
set EXTENATO=変換前と同じ
:---------------------------------------------------
:---ここから処理コマンド
:---------------------------------------------------
:---ウィンドウでユーザー入力値を受け取る
if %DATETIME% == 実行時に入力 ( set /p DATETIME=撮影年月日を入力してください:)
if %NUMSTART% == 実行時に入力 ( set /p NUMSTART=連番初期値を入力してください:)
if %EXTENMAE% == 実行時に入力 ( set /p EXTENMAE=対象拡張子を入力してください:)
:---ユーザー入力値をもとに各種変数に値をセット
set DATETIME=%DATETIME%%DTSUFFIX%
set /a i=%NUMSTART%
:---ユーザー初期値をもとに各種変数に値をセット
set /a NUMDIGIT=%NUMDIGIT%
if %EXTENATO% == 変換前と同じ ( set EXTENATO=%EXTENMAE%)
:---連番桁数の前ゼロを変数にセット
if %NUMDIGIT% geq 3 ( set KETA3=0)
if %NUMDIGIT% geq 2 ( set KETA2=0)
:---ファイル名を仮の値に変更(リネームループ防止用)
for %%F in (*.%EXTENMAE%) do (
if not %%~xF == .bat (
rename "%%F" "%%~nF■%%~xF"
)
)
:---ファイル名変更(IF文で桁数を把握して前ゼロ補完)
for %%F in (*■.%EXTENMAE%) do (
if %%~xF == .bat (
set /a i=i-1
) else if !i! LSS 10 (
rename "%%F" "%DATETIME%%KETA3%%KETA2%!i!.%EXTENATO%"
) else if !i! LSS 100 (
rename "%%F" "%DATETIME%%KETA3%!i!.%EXTENATO%"
) else (
rename "%%F" "%DATETIME%!i!.%EXTENATO%"
)
set /a i=i+1
)
(2)Windows標準のメモ帳を起動する
まず、Windowsキーを押しながらアルファベットのRキーを押します。
そして「ファイル名を指定して実行」ウィンドウが表示されたら、名前に「notepad」と入力し、OKをクリック。
(3)テキストファイルにソースを貼りつける
Windows標準のメモ帳が起動するので、右クリック後に「貼りつけ」をクリック。
すると、手順2(1)でコピーしたソースコードが貼りつけられるので、あとはメニューバーの「ファイル」内の「名前を付けて保存」をクリック。
(4)ファイル名の末尾に.batを付けて保存
まず保存先として「デスクトップ」を選択。(デスクトップ以外でもOK)
ファイル名欄に「ファイル名一括変更ツール.bat」と入れて「保存」ボタンをクリック。
ここで大事なのは、ファイル名の末尾に必ず「.bat」を付けること。それだけで、貼りつけたソースコードをプログラムと認識することができます。
(5)保存結果を確認して試し実行
デスクトップに保存された「ファイル名一括変更ツール.bat」を見て、アイコンが歯車マークになっていれば保存成功。
ソースを正しく貼りつけられたか確認するために、お試しとしてファイル「ファイル名一括変更ツール.bat」をダブルクリックするとツールが起動します。
(6)コマンドプロンプト起動確認
ツールを起動した際に、
・コマンドプロンプト(黒い画面)が開くこと
・「撮影年月日を入力してください:」メッセージが出ること
を確認できたらツール準備完了。一旦、実行せずに終了させるため右上の「×」で閉じます。
[/mytab]
3.ツール実行方法
一括変更したいファイル全部のファイル名が一気に変わりますので、不安な場合はファイルのバックアップを事前に取っておいてから実行すると良いです。
(1)ツールを移動して起動
①一括変更したいファイルが揃ったフォルダを開く
②「ファイル名一括変更ツール.bat」を①のフォルダに格納
③「ファイル名一括変更ツール.bat」をダブルクリック
名称変更する対象ファイルは「フォルダ内のファイルすべて(サブフォルダ除く)」です。
(2)必要な情報を入力
コマンドプロンプト(黒い画面のウィンドウ)が開きますので、
①日付(ファイルの頭に付ける名称)を入力してEnter
②連番の開始番号(通常は1)を入力してEnter
③読み込む対象の拡張子(写真ならjpg)を入力してEnter
これで黒いウィンドウが閉じて、1~2秒するとファイル名が一括で綺麗に変更されます。
これで完了です。
(3)補足
フォルダ内のファイル(サブフォルダは含まない)のうち、③で指定した拡張子のファイルすべてを対象としてファイル名を変更します。
①で付けた名称+アンダーバー+連番3桁+拡張子
という名称で、もともとのファイル名称の昇順でひとつずつファイル名を変えていき、②で付けた開始番号から+1ずつ連番を付けていきます。
4.ソースコードの内容について
以上の機能で物足りなければ、ツールのソースコードを修正することで「痒い所に手が届く」ツールに改良することもできます。
例えば「撮影年月日と連番の間のアンダーバーを他の文字にする」「連番を3桁以外にする」「連番の左側ゼロ埋めを無くす」「拡張子を半角小文字にする」ことも可能です。
当ソースコードの全体の流れとしては、フォルダ内の全ファイル(サブフォルダ除く)を対象に、forループでひとつずつリネーム(ファイル名変更)していくプログラムとなっています。
実態はrenameコマンドの大量発行なので、Windowsの右クリックの「名前を変更」を機械実行しているもの。そのため、JPEGファイルにおけるEXIF情報もそのままにリネームできるのもこのツールの利点です。