Webカメラを使って連続写真を撮っていて動画にしようなどともくろんでいる。
しかしながら現在インターネットから手に入れたフリーソフトが画像を記録すると、ファイル名のフォーマットが
yyyymmddhmmss.jpg
になっている。hourがhhじゃないので、名前の順にソートするとおかしくなるので、更新日時の順番にソートしなくてはならない。まずコマンドプロンプトで
dir /b /od > _dir.txt
と入力してファイル名を_dir.txtファイルに入れる。テキストファイルの先頭のアンダーバーはソートしたときに一番上に来るようにするのが目的なので、別に無くてもいい。
次に、ファイル名を順番に名前変更するのだが、今までエクセルを使っていたのだが、以下のJavaScriptコードで実行することにした。ダミーデータでの試験ではうまく言っているようだ。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metacontent="text/html; charset=utf-8"http-equiv="Content-Type"> <title>Make Rename Command</title> <script type="text/javascript"> function MakeRenameCommand(){ var StartTime = new Date(); var textIn = document.form.TextIn; var textOut = document.form.TextOut; textOut.value=""; var note = document.form.Note; var FnArray = textIn.value.split("\n"); var inIndex=0; var outIndex=1; for(inIndex=0;inIndex<FnArray.length;inIndex++){ if(FnArray[inIndex].slice(-4)===".jpg" || FnArray[inIndex].slice(-4)===".JPG"){ textOut.value += 'rename "' + FnArray[inIndex] + '" "' + ('0000'+outIndex).slice(-4) + '.jpg"\n'; outIndex++; } } var StopTime = new Date(); var dT = StopTime - StartTime; note.value = outIndex + "files\n"; note.value += "it took " + dT/1000 + "sec\n"; } </script> </head> <body> <formname="form"action="post"> <textareaname="TextIn"cols="50"rows="20"></textarea> <textareaname="TextOut"cols="50"rows="20"></textarea><br> <inputtype="button"value="Make Rename commands"onclick="MakeRenameCommand()"><br> <textareaname="Note"cols="50"rows="2"></textarea><br> </form> </body> </html>
4000行弱のデータを処理させたときの速度だが、ChromeとFirefoxは許容できるレベル。
Google Chromeは1.8秒
Firefox 2.6秒
IE11 31秒
インターネットエクスプローラが劇的に遅い。。