EXIFToolを使用してファイル名からEXIFデータを追加する

EXIFToolを使用してファイル名からEXIFデータを追加する

次のように、ファイル名にタイムスタンプを含む写真セットがあります。

Photo on 3-09-12 at 9.24 PM #2.jpg

Photo on 3-09-12 at 9.24 PM #1.jpg

Photo on 3-09-12 at 8.23 PM.jpg

など。

(「3-09-12」は「2012年9月3日」またはDD-MM-YYを意味します)

しかし、この写真にはEXIFデータはまったくありません。このexiftool情報をより大きなコレクションにインポートする前に、EXIFデータ(すべての写真ファイル名)で新しいタイムスタンプを追加するようにこの情報をパイプして指示できますか?

修正する:(現在のパート1)DD-MM-YYと12時間ファイル名の解析に関する質問に@Stephaneさんが親切に回答しました。しかし、私は同じ写真のコレクションに私が見逃したファイル名のバリエーションが含まれていることがわかりました。 「Pt」を追加する方が意味があることを願っています。 2'全く新しい質問を始める代わりに。

要するに:

@Stephaneの素晴らしい回答をどのように変更できますか?

exiftool '-CreateDate<${FileName;use Date::Manip;
                      Date_Init("DateFormat=non-US");
                      /on (.*?at.*?[AP]M)/;$_=$1;
                      y/./:/;$_=UnixDate($_,"%Y-%m-%d %T")
                      }' ./*on\ *at*[PA]M*.jpg

- 次のファイル名形式を使用できます。これは、YYYY-MM-DDと24時間の時間を使用するという点で、質問の最初の部分とは若干異なります。

Photo on 2010-09-15 at 18.44 #4.jpg

Photo on 2010-09-15 at 18.44 #3.jpg

Photo on 2010-09-15 at 18.44.jpg

さらなる説明:

スティーブンの脚本の一部を編集しようとすることは、Date::Manipその台本の最も重要な部分で何が起こっているのかわからないことを意味するようでした。

Date_InitISOスタイルの年中日付形式に戻ったので、その行を省略しようとしました。

/on (.*?at.*?)/;$_=$1;
y/./:/;$_=UnixDate($_,"%Y-%m-%d %T")
' ./*on\ *at*.jpg

しかし、exiftoolno writeable tagsFileName not defined。指示は次の場所にあります。http://search.cpan.org/~sbeck/Date-Manip-5.56/lib/Date/Manip.podこの期間に何が起こっているのか、行の先頭の「y」、セミコロンなどを理解するのに(少なくとも私には)役に立たないようで、検索はほとんど不可能です。

ベストアンサー1

努力する:

exiftool '-CreateDate<${FileName;use Date::Manip;
                      Date_Init("DateFormat=non-US");
                      /on (.*at.*?)(?: #\d+)?\.jpg$/;$_=$1;
                      y/./:/;$_=UnixDate($_,"%Y-%m-%d %T")
                      }' ./*on\ *at*.jpg

(このモジュールを取り付ける必要があるかもしれませんDate::Manip perl)。

-Tag<value適切なタグを設定してください。処理後${tag;perl-code}の値に拡張するために使用できます。tagperl-code

ここでは、計画されたDate::Manip関数を使用してUnixDateファイル名の日付を解析し、タグCreateDate()で2011-04-15 21:38:00許可されている形式に変換します。

Date::Manipさまざまな一般的な日付形式を理解します。たとえば、3-09-12 at 9:24 PM仕事や月が最初に来るのがアメリカであるかアメリカ以外の規則であるかを知らなければなりませんが)と2010-09-15 at 18.44:代わりにメモ.)を理解します。

したがって、私たちがしなければならないことは、ファイル名からその部分を抽出して.変換する:ことですUnixDate

おすすめ記事