ふたつの画像ファイルを結合して、ひとつのファイルにするバッチを紹介します。
書類をイメージスキャナで両面取り込みすると、表面と裏面で別々の画像ファイルができることがありますよね。私も年賀状をScanSnapで電子化しているのですが、その際あて名と写真がバラバラになってしまい不便です。
そんなわけで、一括結合する手段をつくりました!
ImageMagickを使用、対象ファイルは「jpg」限定としています。
バッチプログラム(フォルダレベル)
画像の入ったフォルダをバッチプログラムにドロップして、配下のファイルを一括統合。
ファイル名が結合したい順番になっていること(裏、表、裏、表…)が条件です。
以下がバッチプログラムのソースコードです。使用は自己責任でお願いします。一応フォルダのバックアップを取っておくことをお勧めします。(要:ImageMagick)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
@echo off rem メッセージを表示 echo 「%1」の画像を処理します。 rem 作業ディレクトリを移動 cd /d %1 rem 使用済みファイル格納ディレクトリを作成 mkdir .\backup > NUL 2>&1 setlocal enabledelayedexpansion set x=1 for %%a in (*.jpg) do ( if !x!==1 ( rem ひとつ目の画像ファイル名を記憶 set jpg1=%%a set x=2 ) else ( rem ふたつ目の画像ファイル名を記憶 set jpg2=%%a echo !jpg1!と!jpg2!を結合します。 magick !jpg1! !jpg2! +append M_!jpg1! echo M_!jpg1!を作成しました。 set x=1 rem 処理済みファイルを移動 move !jpg1! .\backup\ move !jpg2! .\backup\ ) ) echo 終了しました。 PAUSE endlocal |
画像ファイルを用意します。裏表が交互に並ぶようにファイル名を調整します。
フォルダをバッチファイルにドロップします。
コマンドプロンプト画面が起動して、ファイルが結合されます。
最後にpauseコマンドを入れているので、完了したらEnterキー等を押してください。
画像ファイルが結合されました。ファイル名は、最初のファイル名の頭に「M」を付けたものとなっています。
元の画像ファイルはbackupフォルダに移動しています。
バッチプログラム(ファイル指定)
ファイルを2個選択して実行するパターンも用意しました。こちらも自己責任でお願いします。(要:ImageMagick)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@echo off rem 使用済みファイル格納ディレクトリを作成 mkdir .\backup > NUL 2>&1 if NOT EXIST "%2" ( echo ファイルは2個選択してください。 pause exit /B ) rem ファイル名を取得 for /f %%i in ('echo %1') do set FILE_NAME=%%~ni magick %1 %2 +append M_%FILE_NAME%.jpg rem 処理済みファイルを移動 move %1 .\backup\ move %2 .\backup\ |