JPG画像を取り込む

という訳で,リムーバブルディスクからJPG画像を取り込むJScriptスクリプト*1.ローカル側でのファイル名は yyyy_mm_dd_hh_mm_ss.jpg とする(こうすりゃ一意になるだろう.デジカメが2台あるとまずい,かも?).

var fso = WScript.CreateObject("Scripting.FileSystemObject");

function getPics_d(d) {
    for (var e = new Enumerator(d.RootFolder.SubFolders); !e.atEnd(); e.moveNext()) {
        getPics_f(e.item());
    }
}

function add0(d) {
    if (d < 10) {
        return "0" + new String(d);
    }
    else {
        return new String(d);
    }
}

function getPics_f(f) {
    for (var e = new Enumerator(f.Files); !e.atEnd(); e.moveNext()) {
        var j = e.item(), p = j.Path;
        if (p.match(new RegExp(".jpg$", "i")) == null) {
            continue;
        }

        var lm = new Date(j.DateLastModified);
        var fn = lm.getFullYear() + "_" + add0(lm.getMonth()+1) +
            "_" + add0(lm.getDate()) + "_" + add0(lm.getHours()) +
            "_" + add0(lm.getMinutes()) + "_" + add0(lm.getSeconds()) + ".jpg";
        if (! fso.FileExists(fn)) {
            WScript.StdOut.WriteLine(p + " -> " + fn);
            fso.CopyFile(p, fn);
        }
    }
    for (var e = new Enumerator(f.SubFolders); !e.atEnd(); e.moveNext()) {
        getPics_f(e.item());
    }
}


for (var e = new Enumerator(fso.Drives); !e.atEnd(); e.moveNext()) {
    var d = e.item();
    if (d.DriveType == 1) {     // Removable
        getPics_d(d);
    }
}

WScript.StdOut.WriteLine("Bye!");

こいつを getPics.js などとして保存し,右クリックして「コマンドプロンプトで開く」とすれば,そのディレクトリにJPGファイルががーっとコピーされる.WSH (Windows Scripting Host) はもちろん入れておいてね.

*1:馬から落馬... ではない.