gaggitのブログ

コーディング、ガジェット、TIPS関連、FX

pngファイルをjpgファイルに一括変換(その2)

前回IrfanViewGUIを使用して、一括変換を行いましたが、今回はコマンドラインpngファイルをjpgファイルに変換してみます。ファイル名はフルパスで書く必要があります。

@echo off
set DIR=C:\Users\hosaka\Dropbox\スクリーンショット
"C:\Program Files\IrfanView\i_view64.exe" %DIR%\*.png /convert=%DIR%\*.jpg /one /closeslideshow
exit

案の定というか、想定していたとおり、元のpngファイルは残ったままです。Irfanのi_option.txtを確認しましたが、上書きのオプションはサポートされていないようです。

ということで、コマンドラインのFORコマンドを使用して、一つづつファイルを変換後、削除します。下記のファイルをコピーして、DIR_NAMEの後に変換したいフォルダに変更して、ファイル名.batとして、保存して、実行します。

@echo off
set DIR_NAME=C:\Users\ユーザ名\Dropbox\スクリーンショット
for /F "delims=," %%I in ('dir /B %DIR_NAME%\*.png') do "C:\Program Files\IrfanView\i_view64.exe" %DIR_NAME%\%%I /convert=%DIR_NAME%%%~nI.jpg /one /closeslideshow & if exist %%~nI.jpg del %DIR_NAME%\%%I
exit

 

バッチ解説

Dropboxで作成されるファイル名がスペース入りのファイル名です。orzそのため、for文のオプションの"delims=,"で、デフォルトのデリミタ(区切り文字)をスペース、タブからカンマ(,)に変更しています。

 

オプション解説
IrfanViewのオプション

/convert:変換後のファイル名をフルパスで指定

/one:一つのプロセスのみで実行

/cliseslideshow:変換終了後、プログラムの終了

コマンドライン

~n変数名:ファイル名のみ、抽出(abc.defとあったら、拡張子以外のabcのみ抽出)