いつものしらべてもでてこない

調べた事を書きます

ファイルの日付文字列から更新日時や作成日時を一括で変更する方法。スマホの写真や動画、コマンド、フリーソフト。

スマホでファイルを移動していたら更新日時が書き換えられて並び順がばらばらになってしまった。
調べるとスマホではアプリと対象の前後の状況によって日時が書き換えられる事があるようだ。
色々調べて試した所、大丈夫なはずのアプリでzipから解凍しても更新日時は書き換えられてしまったのでSDカードに日時を復元したファイルを入れる事にした。
但し段階的な操作が必要。

準備

ファイル名(拡張子)につけた日付部分を自動で削って変更するので手順を把握してから行いましょう。

PowerShellスクリプトを作成しました

この記事の処理は手順が2つに分かれていて処理数に制限がありやや面倒なので右クリックして実行するだけのPowerShellスクリプトを作成しました。
新しい記事をご覧下さい。
bannan.hatenadiary.jp

状況

ファイル名に日付の文字列が入っている。
日付の文字列から更新日時を変更したい。
(yyyy-mm-dd_HH-MM-SS)

若しくは
更新日時や作成日時を基準にファイル名に日付をつけたり他の日付を更新したい。

必要なソフト

更新日時が正しいならFlexible Renamerだけで良い。
www.vector.co.jp


更新日時をファイル名に付ける&戻すツール
www.vector.co.jp
注意点としてVBSなので引数の都合で150ファイル程度しか一度に処理できない。

【ソフトウェア名 】ファイルの更新日時をファイル名に付けるツールとそれを戻して更新日時へ反映するツール
http://www.vector.co.jp/soft/dos/util/se499266.html

この2つ。

大まかな手順

Flexrenaで正規表現を使ってファイル名の拡張子の後ろに必要な日時文字列を追加する。yyyymmdd_HHMMSS
RecoverDt.vbsで更新日時へと反映する。

若しくは
Flexrenaで更新日時を他の部分へコピーする。
Flexrenaで正規表現を使ってファイル名に適当な日時をつける。

作業

仮定としてyyyy-mm-dd_HH-MM-SS.pngと言うファイルを作業対象とします。
SDカードは取り外してPCに直接接続します。

ファイル名に日付文字列を付け足す。

Flexrenaでフォルダを選択。
上のメニューにある「リネーム」をクリック。
ターゲットの「ファイル」をクリックしてチェック。
フィルタは「*」で全ファイルを選択。
「サブフォルダ以下」も行いたい場合はチェック。

「高度なリネーム」をクリックしてチェック。
リネーム方法の「正規表現ラジオボタンをクリックして選択。

検索に
(\d{4})-(\d{2})-(\d{2})-(\d{2})-(\d{2})-(\d{2})(\.png)
又は
(\d{4})-?(\d{2})-?(\d{2})_?-?(\d{2})-?(\d{2})-?(\d{2}).*(\.png|\.jpg|\.mp4)

置換に
\0\1\2\3_\4\5\6
(この部分で「サポート」のリストを開くとわかるが更新日時からファイル名に日付をつけることも可能)

何もファイルを選択していない、か必要なファイルだけ選択した状態で、下の「リネーム(R)」をクリック。
何もファイルを選択していないと全ファイルを処理するか聞かれるので問題なければ「はい」をクリック。

こうすると「元の拡張子」+「yyyymmdd_HHMMSS」と言うファイルが出来上がる。「拡張子を表示する」にしていない場合はこのソフトで見ないとわからない。

ファイル名の日付文字列を削って更新日時に反映する。

出来上がったファイルを RecoverDt.vbsドラッグアンドドロップ する。ファイル名が引数になるので1度に150ファイル程度まで。
ここでyyyymmdd_HHMMSSが削られて更新日時に反映される、その為この部分しか日付が無いとファイル名から日付がなくなり判別できなくなるがFlexrenaを使えば正規表現からファイル名に書き出せるので問題ない。

更新日時を作成日時に反映する。

Flexrenaで「属性」をクリック。
タイムスタンプで「揃える」を選択。
元となる日時は「更新日時」をクリックして選択。
適用先は「作成日時」をクリックしてチェック。
下の「設定開始」ボタンをクリックして設定が完了。

終わり

ファイル名は重要。
EXIFの情報も更新できるはず。

以上。