2012/05/19

SDカードの画像を特定フォルダへ自動転送するバッチスクリプト


デジカメのSDカードから、特定のフォルダに移すことがあります。この作業を自動化するため、バッチスクリプトを書きました。

REM 保存先フォルダの指定
set outputdir=C:\photo

REM %date以降の文字列では2000-01-01(年-月-日)という形式の文字をつくる
set outputdir=%outputdir%\%date:~-10,4%-%date:~-5,2%-%date:~-2,2%
mkdir %outputdir%

REM この三重ループで、IからLまでのドライブにある、
REM 「DCIM\101MSDCF」フォルダまたは「DCIM\100MSDCF」にある、
REM 拡張子がjpg、jpeg、cr2のファイルをoutputdirに移動する
for %%i in ("I" "J" "K" "L") do (
    for %%j in ("DCIM\101MSDCF" "DCIM\100MSDCF") do (
        for %%k in (jpg jpeg cr2) do (
            if exist %%i:\\%%j\*.%%k (
                move /-Y %%i:\\%%j\*.%%k %outputdir%
            )
        )
    )
)

REM 使い終わったので消しておく
set searchdir=
set outputdir=


これをmovephoto.batなどで保存して実行します。

もちろんですが、forの中は適宜書き換える必要があります。

これで、outputdirで指定したフォルダの直下に2012-05-19のような名前のフォルダが作成され、該当ファイルが転送されます。

応用1:ファイルを移動ではなくコピーがいい場合は、moveをcpにします。

cp /-Y %%i:\\%%j\*.%%k %outputdir%
応用2:上書き確認をだしてほしい場合は、/-Yを消します。

move %%i:\\%%j\*.%%k %outputdir%

Eye-fiには手が出せないので、これでちょっとは楽になったかな…。