JPEGファイルのファイル名先頭に "日時" を付加し、その日時でJPEGファイルの更新日時を変更させるツールを作成したい。
概要
カード明細をスキャンし、JPEGファイルとしてPCおよびGoogleフォトに保存している。
JPEGファイルはファイル名よりカードの利用日時がわかるように、ファイル名に 利用日時 を付加している。
例えば "20200102_1122_セブンイレブン.jpeg" のような感じである。
この運用で1つ問題なのは、Googleフォトにアップされた際、JPEGファイルの更新日時で分類されてしまう事である。
このためGoogleフォトの画面より、アップされたレシート画像を1枚ずつ確認し、日付を訂正することをやっていた。
ファイル名に利用日時を付加しているので、この情報を元にJPEGファイルの更新日時を一括で変更できればGoogleフォトも利用日時で分類されるのでは、というのが今回の趣旨である。
JPEGファイルはファイル名よりカードの利用日時がわかるように、ファイル名に 利用日時 を付加している。
例えば "20200102_1122_セブンイレブン.jpeg" のような感じである。
この運用で1つ問題なのは、Googleフォトにアップされた際、JPEGファイルの更新日時で分類されてしまう事である。
このためGoogleフォトの画面より、アップされたレシート画像を1枚ずつ確認し、日付を訂正することをやっていた。
ファイル名に利用日時を付加しているので、この情報を元にJPEGファイルの更新日時を一括で変更できればGoogleフォトも利用日時で分類されるのでは、というのが今回の趣旨である。
仕様
■ 開発言語は?
■ JPEGファイル仕様
■ PowerShellファイル仕様
■ 処理内容
PowerShell で作ってみる。
■ JPEGファイル仕様
(2020.09.17改版) 拡張子は "jpeg" または "jpg" どちらでも可能とするように修正
・任意のフォルダにスキャンしたJPEGファイルを置くようにする。(例:D:\Scan\Receipt)
・ファイル名は "YYYYMMDD_HHMM_名称.jpeg (または .jpg)" の書式とする。
"YYYYMMDD" はカード利用日
"HHMM" はカード利用時刻 (秒は含めない)。時刻不明の場合は"1200"を指定する事とする。
"名称" は任意の名称。省略しても良いが、名称先頭の"_"は省略しないこと。
例) "20200102_1122_.jpg"
・任意のフォルダにスキャンしたJPEGファイルを置くようにする。(例:D:\Scan\Receipt)
・ファイル名は "YYYYMMDD_HHMM_名称.jpeg (または .jpg)" の書式とする。
"YYYYMMDD" はカード利用日
"HHMM" はカード利用時刻 (秒は含めない)。時刻不明の場合は"1200"を指定する事とする。
"名称" は任意の名称。省略しても良いが、名称先頭の"_"は省略しないこと。
例) "20200102_1122_.jpg"
■ PowerShellファイル仕様
PowerShellファイル名と書式:ChangeJpegDate.ps1 (JPEGファイルパス)
引数の"JPEGファイルパス"にスキャンしたJPEGファイルを確認したパスを指定する。
この引数は必須とする。
引数の"JPEGファイルパス"にスキャンしたJPEGファイルを確認したパスを指定する。
この引数は必須とする。
■ 処理内容
1) 引数で指定したフォルダ内の 99999999_9999_xxx.jpeg (または .jpg) の名前を持つファイルを取得
サブフォルダは対象外。
2) ファイル名先頭8桁を "日付"、10桁~13桁目を "時刻"(秒は00とする) として値を取得
正しい日時でない場合(13月40日や30時60分などあり得ない日時の場合)、次のファイルへ進む
3) 取得した日時でファイル名の更新日時を変更
4) 処理結果をファイル単位で画面に表示
サブフォルダは対象外。
2) ファイル名先頭8桁を "日付"、10桁~13桁目を "時刻"(秒は00とする) として値を取得
正しい日時でない場合(13月40日や30時60分などあり得ない日時の場合)、次のファイルへ進む
3) 取得した日時でファイル名の更新日時を変更
4) 処理結果をファイル単位で画面に表示
※ #2 へ続く。
自作プログラム, PowerShell
2020.09.17改版
2020.09.17改版
0 件のコメント:
コメントを投稿