Copyright (c) RenameMe V2.0 2018-26 Nack-Lab (K.Nakamura)

使用許諾条件

本ソフトウェアの本バージョンはフリーソフトです。個人・法人に限らず利用者は商用目的も含め、自由に使用することができます。

本ソフトウェアの著作権は作者に帰属します。
本ソフトウエアを著作権者の許諾なしに再配布することはできません。

本ソフトウェアは「現状のまま」で提供され、明示であるか暗黙であるかを問わず、いかなる保証も行われません。
本ソフトウェアに起因または関連して生じる一切の請求、損害、その他の義務について、作者は何らの責任も負わないものとします。

【Acknowledgment】
The original images for the application icon are made by Freepik from www.flaticon.com.

------------------------------------------------------------------------------

【概要】
■"Rename Media Files"を略して"RenameMe"と命名しました。

■拡張子mov、mp4、m4v、jpg、jpeg、HEICのファイル名を撮影日時を基に一括リネームするアプリケーションです。
　・HEICはiOS11からjpgの後継として採用されたフォーマットです。
  ・上記以外の拡張子のファイルについても、ファイル作成日または更新日を基にリネームすることができます。

■１つのフォルダ、あるいは１つ以上のファイルを対象とすることができます。

■撮影日時にはヘッダ情報、ないしはファイル更新日時を使用します。
　Macから出力したxmpから撮影日時を設定することもできます。
　・mov、mp4、m4vについてはヘッダ情報からCreationTimeを取得しています。
　・jpg、jpeg、HEICについてはExif情報のDateTimeOriginalを取得しています。
　・ヘッダ情報とファイル更新日時の古い方を適用できます。
　・ヘッダ情報が設定されていない場合はファイル更新日時を適用できます。

■ファイル名に日時が含まれている場合、ファイル更新日時として扱うことができます。

■日時の文字列化はアプリにプリセットされた書式に加え、ユーザ定義の書式を追加できます。

■年、年月、年月日、拡張子別のサブフォルダに仕訳することができます。

■iPhoneからMacまたはWindowsにダウンロードされた写真、動画ファイルを主な対象にしています。
　・iPhoneライブフォトの静止画/movペアを考慮しています。

------------------------------------------------------------------------------

【注意】
■本アプリは対象ファイル名を直接変換します。
　本格使用する前に目的に適った変換が行えるかテストしてください。

■jpg、mp4はいくつかのカメラで撮影したデータでもテストしていますが、mov、HEICはiPhoneで撮影した
　データしかテストしていません。

■本アプリは300ファイル程度までの一括変換を想定しており、一括変換中のキャンセル機能はありません。
　処理環境により異なりますが、1,000を超える場合は10秒以上かかる可能性があります。



------------------------------------------------------------------------------
【動作確認環境】
　Windows 10、11、.NET 4.8以降

 Windows 10は自動更新されていれば.NET Frameworkも4.8へアップデートされているはずですが、
 まだの場合はWindowsを最新状態にすることをおすすめします。
 次のMicrosoftのサイトから.NET Framework 4.8をインストールすることもできます。
  　https://docs.microsoft.com/ja-jp/dotnet/framework/install/on-windows-10

　Windows 10、11でHEICの画像表示がされない場合は、MicrosoftStoreから「HEIF 画像拡張機能」を
　インストールしてください。
　
　このアプリはWindows 11ではLegacyとなったMediaPlayerを使用しています。Windows 11で無効化されている場合は
　次の要領で[Windows Media Player従来版(アプリ)]]を有効にしてください。
　設定⇒システム⇒オプション機能⇒オプション機能を追加する/機能を表示⇒[機能を表示]
　⇒[Windows Media Player従来版(アプリ)]]をONにする⇒[次へ]⇒[追加]
　数分かかる場合があり、PCの再起動が必要な場合があります。

  Windows 7以降では.NET Framework 4.8.1がインストールされていれば動作可能ですが、チェック不十分です。
　.NET Framework 4.8がインストールされていない場合は、次のキーワードで検索して、インストールしてください。
　　Windows 用の Microsoft .NET Framework 4.8 オフライン インストーラー
------------------------------------------------------------------------------

【インストール】
■RenameMeSetUp.msiをダブルクリックし、インストーラの指示に従ってインストールしてください。
　Windows 10以降のセキュリティー強化によりインストールが中断される場合があります。
　信頼できる経路（VectorのhttpsのURLなど）で入手した場合は次の何れかの方法でインストールしてください。
　・「コントロールされたファルダーアクセス」を一時的にオフにする。
　・「アプリをコントロールされた フォルダーアクセスで許可する」でC:\Windows\System32\msiexec.exeを許可されたアプリに追加する。
　いずれの場合も、インストール後に元の設定に戻しください。

■標準的な環境では次の場所にアプリケーションがコピーされます。
　C:\Program Files (x86)\RenameMe

■デスクトップとスタートメニューにショートカットが追加されます。

------------------------------------------------------------------------------

【アンインストール】
つぎのいずれかでアンインストールします。
■RenameMeSetUp.msiを再実行し、削除を行う。

■スタートメニューのRenameMe > Uninstall RenameMe を実行する。

■コントロールパネル > プログラムと機能 > プログラムのアンインストールまたは変更を選択。
　一覧からRenameMeSetUpを探し、ダブルクリック。アンインストールを実行する。

------------------------------------------------------------------------------

【問い合わせメールアドレス】
mailto:apps@nack-lab.com

【RenameMeサポートページ】
https://www.nack-lab.com/RenameMe/

【Nack-Lab(K.Nakamura)アプリ紹介ページ】
https://www.nack-lab.com/

【Nack-Lab(K.Nakamura)ブログ】
https://ken-plus.blogspot.jp/

------------------------------------------------------------------------------

【V2.0の主な変更点】
■インストーラ修正
　これまでインストール先を変更しても規定のプログラムフォルダ（通常C:\Program Files (x86))にインストールされて
　いましたが、指定の場所にインストールされるように修正しました。
　インストール先を変更する場合は、先にインストール済みのアプリをアンインストールしてください。

■ファイル一覧項目追加
・ファイル一覧の拡張子欄に動画圧縮codec表示を追加しました。
　これに伴い、一覧のヘッダ表示を"拡張子"から"ext/codec"に変更しました。
　
　mov、mp4の場合は"H.264"または"HEVC"を表示します。
　iPhoneは同じmov拡張子でもiOS12移行はHEVCで、それ以前はH.264と異なります。
　また、Macでオリジナル画像を書き出した場合にHEVC、そうでない場合はH.264となります。
　HEVCはHDR(ハイダイナミックレンジ)対応のcodecで、これに非対応の環境では明るい部分が白飛びしたりします。

　静止画の場合、拡張子がHEICだが内容はJPGの場合に".HEIC/JPG"と表示します。
　多分一時的な現象だったと思いますが、WindowsのiCloud Photoでダウンロードしたファイルで発生したことがあります。
　この場合は拡張子を".jpg"にするとPhotoshopなどのアプリで表示や編集が可能になります。

■ファイル一覧の列追加、および列の幅・表示/非表示の設定、および保存
　一覧の上の歯車アイコンをクリックする設定画面で、列の表示/非表示を設定できます。

■ファイル一覧の列に解像度、再生時間を追加しました。
　初期状態では解像度は表示、再生時間は非表示です。

■新ファイル名設定をファイル一覧の表示順で行うように変更しました。
　一覧項目名クリックでソート可能ですが、これまで新ファイル名設定時に現ファイル名順にソートし直していました。
　この変更により、[再表示]および[リネーム]実行を表示順で行うようになります。
　[00]などの連番フォーマットの場合に効果的です。
　
　これに伴いフォルダ指定の場合の[再表示]の動作を次のように変更しています。
　　[再表示]     　現在の表示状態を保存するためフォルダ内のファイルの再読み込みは行いません。
　　Shift+[再表示] フォルダ内のファイルの再読み込みは行い、現ファイル名でソートしなおします。

■ファイルソート順の変更
　ファイルの末尾が半角数字の場合、初期表示時は数値として比較するように変更しました。
　エクスプローラの表示順と一致します。
　例　IMG_001.JPG < IMG_0002.JPG < IMG_005.JPG < IMG_0010.JPG

　[現ファイル名]をクリックすると昇順、降順を入れ替えてソートし直しますが、このときは従来通りの文字比較順としました。
　例　IMG_0002.JPG < IMG_001.JPG < IMG_0010.JPG< IMG_005.JPG 

■サブフォルダ移動機能追加
・画面右上の下矢印アイコンクリックで、一覧に表示したファイルをサブフォルダへ移動することができます。
・年、年月、年月日、拡張子別の移動が可能です。
・年月日はファイル更新日、撮影日(作成日)、ファイル名日付からを選択できます。
　更新日時はファイルの実際の更新日を適用するため、一覧に表示される更新日時と異なる場合がありえます。
　ファイル更新日はどのファイルにも必ずありますが、撮影日、ファイル名日付は有効な日付がない場合があり、
　その場合は移動されません。また、ファイル名日付は選択中のフォーマットTが適用されます。
・サブフォルダない場合は新規作成します。

■画像/動画ビューワ機能追加
　ふた通りの方法を追加しました。
　・画面右上の虫眼鏡アイコンをクリック⇒画像/動画ビューワ表示⇒一覧で選択したファイルの画像を表示
　　既定外の場合にpng、gif、ico、webp、svg、mpg、mpeg、m2t、datも表示可能
　・一覧でファイル名ダブルクリック
　　Windowsの規定アプリで表示
　（Windows 11で「フォト」が規定アプリに設定されている場合、毎回アプリ選択のダイアログが表示されることがあります。
　　その場合は画像/動画ビューワをご利用ください。)

■ファイル一覧表行クリック時の動作変更
・画像/動画プレビュー、および規定アプリでのオープン機能に伴い、ファイル一覧表行クリック時の動作を変更しました。
　・ファイル名ダブルクリックにより、ファイルを規定のアプリで開く
　・ファイル名Shift+シングルクリック
　動画チェックまたは画像チェックが表示されている場合、その画面で表示
　
　動画チェック画面に表示
　でビューワに画像/動画を表示
　　画像プレビュー
　・「変更」チェックボックスの状態変更は「変更」列のクリック時のみに変更
　　一覧左端のボックスクリックによる一括変更は従来どおり
　　
■日時フォーマット設定方法変更
　日時フォーマット設定ダイアログを変更しました。
　ファイル名に適用するフォーマット、ファイル名から更新日時を抽出するフォーマットの両方に共通のダイアログとなっています。
　ユーザ定義の日時フォーマットを複数追加できるようにしました。（規定＋ユーザ定義合計20件まで）
　定義は残し、コンボボックスに非表示とすることもできます。
　項目削除は次の二通りの方法で行えます。また、規定のフォーマットも含めて削除も可能です。
　・項目を選択し[デリートキー]を押下
　・項目の文字列を削除し、空にする

■ファイル名から更新日時を抽出するフォーマット設定追加
　これまでは"20240401_091234"のように"yyyyMMdddd"と"HHmmss"がファイル名に含まれている場合に、更新日時を抽出していました。
　これをユーザ定義も含め、多様なフォーマットに適用できるように変更しました。
　これにより、"2024年04月01日09時12分34秒"のような場合でも、更新日時を抽出することができるようになります。
　一方、これまで"yyyymmdd-HHmmdd"と"yyyymmdd_HHmmdd"の両方を適用していましたが、V2.0からは選択したフォーマットだけが適用されます。
　追加、変更、削除方法は[日時フォーマット設定]と同じです。
　詳細は【日時フォーマットについて】またはWebのドキュメントを参照してください。
　
■動画比較画面に解像度表示追加
　画像比較画面と同様に、動画比較画面にも解像度表示を追加しました。
　WindowsのiCloud Photoでダウンロードした動画は 1280 x 720 と少々小さい画像になるので、
　不要なファイルの判断材料として表示しました。

■「HEVCのファイル名に"_HEVC"を付加」オプションを追加
　Macで書き出したオリジナルファイルをフォーマット変換したものと区別できるようにファイル名に"_HEVC"を付加します。
　「ファイル名の_HEVCを残す」と併用します。
　H.264とHEVCの動画が混在している場合、このオプションを使用するとHEVCにだけ"_HEVC"が付加されます。

■拡張子変更機能変更
・「現拡張子を残し新拡張子を付加」オプション追加
　拡張子"mov"の場合、Windows10のファイルエクスプローラでサムネイルが表示されませんが、拡張子を"mp4"に変更すると表示されます。
　また、私はCorel VideoStudioを使用していますが、これも拡張子を変更することで編集対象にできます。
　これに対応するため拡張子変更機能で"mov"を"mp4"に変換していますが、もとは"mov"であったことがわかるようにこのオプションを追加しました。　
　この場合、次のようにファイル名を変更します。
　現ファイル名　20220909_102600.mov
　新ファイル名　20220909_102600.mov.mp4
　現拡張子を"mov.mp4"、新拡張子を"mov"として一括変換することで、元にもどすことができます。
・仕様変更（拡張子の大文字小文字の扱い）
　これまで拡張子変更機能では拡張子を小文字で扱っていましたが、この機能を追加に伴い大文字小文字混在の拡張子へ仕様を変更しました。
　ただし、同一拡張子かどうかの判断では大文字小文字を区別しません。

■その他バグ修正、変更
・画像・動画比較で削除を行ったあと、ファイルが存在しなというエラーメッセージが表示されたのを修正。
・画像比較画面で解像度が"0 x 0"となるものがあるのを修正。
・ファイル更新日時適用とファイル名日時比較修正（秒単位以下の違いを無視する）
・「現ファイル名日時適用」修正
　「撮影日時未設定時にファイル更新日時を適用」がOFFの時はファイル更新日時と比較せずファイル名日時を適用
・[ファイル名に合わせてファイル更新日時変更]により更新日時が変更される場合は更新日時を薄い赤でハイライト。
・[フォルダ]選択ボタンクリックでフォルダ選択後、[再表示]で一覧に反映するうに変更。
・DJIで撮影したmp4が不正なファイルエラーとなるのを修正。画像データの末尾にメタデータが追加される場合に発生。

------------------------------------------------------------------------------

【基本的な使い方】
詳しくは【RenameMeサポートページ】を参照してください。
https://www.nack-lab.com/RenameMe/

■対象フォルダまたはファイルを設定します。
　ドラッグ＆ドロップ操作、フォルダ選択ダイアログ、またはフォルダ欄に直接パスを入力するで設定できます。
　フォルダをひとつだけドラッグ＆ドロップした場合は、それがフォルダ欄に設定されます。
　複数のフォルダの場合は最初のフォルダだけがフォルダ欄に設定され、二つ目以降は無視されます。
　フォルダ、ファイルが混在する場合は最初のフォルダが優先され、それ以外は無視されます。
　複数のファイルの場合は拡張子選択チェックボックスで設定したもののものだけを抽出して一覧に設定し、
　フォルダ欄は空欄となります。

■対象ファイルは拡張子で絞込むことができます。
　mov、mp4、m4v、jpg、jpeg、HEICが規定の拡張子で、拡張子選択チェックボックスでチェックされたものが抽出されます。　
　[規定外]にチェックを入れた場合はこれ以外の拡張子のファイルの抽出ができます。
　規定外の場合はメタデータの撮影日時は参照せず、ファイル作成日時、更新日時に基づいてリネームを行います。

■[規定外]をチェックすると、[規定外]の拡張子を対象とすることができます。

■[再表示]ボタンをクリックすると設定されたフォルダまたはファイルをチェックし、一覧を更新します。
　フォルダが設定されている場合はフォルダ内を再検索します。
　ファイルだけが設定されている場合は、既にセットされているファイル内のファイルを再チェックします。
　対象フォルダ／ファイルが変更された場合も[再表示]を行い、一覧を更新します。

■[リネーム]ボタンクリックでファイル名一括変換を実行します。
　実行対象は左端のチェックボックスがチェックされているものだけです。

■撮影日時はデジカメが普及以前は無効と考え、1990年より前は未設定として扱います。

■撮影日時が取得できなかった場合はデフォルトではリネーム対象から除外しますが、
　[撮影日時未設定時にファイル更新日時を適用]がチェックされている場合はファイル更新日時を適用しリネームします。

■次の場合はチェックボックスが無効となり、変換対象から除外します。
　現・新ファイル名が拡張子も含め同じ場合。
　撮影日時が設定されておらず、「撮影日時未設定時にファイル更新日時を適用」がチェックされていない場合。

■撮影日時、またはファイル更新日時から新ファイル名を作成することができます。
　この変換に適用するファーマットは[フォーマットＦ]コンボボックスで選択します
　拡張子は元のファイルのものをそのまま引き継ぎます。大文字、小文字も変換しません。

■[現ファイル名日時適用]がチェックされている場合、ファイル名にフォーマットＴに合致する文字列がれば
　日時データに変換し更新日時として扱うことができます。
　この変換に適用するファーマットは[フォーマットT]コンボボックスで選択します。
　ファイル名[フォーマットT]に合致している文字列が含まれている場合だけ有効です。

■[フォーマットF][フォーマットT]共に、フォーマットをユーザが設定できます。
　コンボボックス右側の鉛筆アイコンクリックで編集ダイアログを表示し、追加・変更・削除することができます。
　本バージョンでは各々について規定、ユーザ定義合わせて最大20個までに制限してあります。
　
　日付データのフォーマットについてはC#のDateTimeの仕様を参照してください。
　https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/custom-date-and-time-format-strings

■フォーマットを変更した場合は[再表示]をクリックします。
　選択されたフォーマットを適用して、一覧が更新されます。

■画面右上の文書アイコンで、直近に行った処理の結果が表示されます。
　[元に戻す]で直近のリネーム、移動を元に戻すことができます。
　[バッチとして保存]をクリックすると、コマンドプロンプトから実行するバッチファイルとして
　保存することができます。これはリネーム前のファイル名に戻すRENまたはMOVEコマンドを列挙したものです。 　　　 

　保存したバッチファイルをコマンドプロンプトから実行することで、ファイル名元に戻す場合ことが可能です。
　拡張子が".bat"の場合はダブルクリックで実行できます。
　「実行する場合は"GO"と入力してください」のプロンプトが表示されるので、"GO"(大文字)と入力します。
　「GO」以外の場合は処理を実行せずに終了します。
　リネーム処理の後バッチ処理実行までにファイル削除等の操作が行われた場合はエラーが発生することがあります。

---------------------------------- 補足 ----------------------------------

【規定外の拡張子について】
■規定以外の拡張子は、デフォルトでは規定以外の全て(.*)ですが、対象とする拡張子を設定することができます。
　[規定外]チェックボックス右側の鉛筆アイコンをクリックし、[規定外拡張子設定]ダイアログで入力します。
　・入力例：".png;"、"png"、".png" （".png;"に変換して保存）
　　　　　　".png;.avi;"、"png;avi;"、".png; avi" (".png;.avi;"に変換して保存）
　・デフォルト値は".*"で、規定の拡張子以外全てにマッチします。
　・複数の拡張子を設定するときは";"で句切ります。
　・".*"、";"以外は、ファイル名として有効な文字のみ使用可能です。
　・既定の拡張子は設定できません。（".mov"、".mp4"、".m4v"、".jpg"、"jpeg"、".heic"）
　・拡張子の大文字、小文字は区別せず、大文字は小文字に変換して保存します。
　・入力された拡張子の先頭に"."がない場合は、"."を付加して保存します。
　・先頭、末尾の空白文字は削除します。中間にある空白文字は残します。
　　" png ; avi ;"の場合は前後の空白を削除し".png;.avi;"に変換しますが、"p ng"、". png"などの場合は空白が残ります。
　　（正規の拡張子で空白を含むものは見たことがありませんが、ファイル名としては有効です。）

　[規定外]チェック時に規定拡張子のチェックを外しますが、チェックすることで対象に含めることができます。

【フォーマットＦについて】

■[フォーマットＦ]は新ファイル名を生成するフォーマットです。
　書式の詳細はWebページを参照してくださ

■撮影日時、またはファイル更新日時に[フォーマットＦ]を適用し、新ファイル名を作成します。
　この変換に適用するファーマットは[フォーマットＦ]コンボボックスで選択します
　拡張子は元のファイルのものをそのまま引き継ぎます。大文字、小文字も変換しません。

■新ファイル名を生成する[フォーマットＦ]コンボボックスに、次の６つのフォーマットを規定で用意しています。
　yyyyMMdd_HHmmss
　yyyyMMdd_[000]
　[.]_yyyyMMdd_[000]
　{IMG}_[0000]
　[fn]_yyyyMMdd
　[fn]_yyyyMMdd/IMG//

・yyyyMMdd_HHmmssの場合
　撮影日時を"20180101_010101"のように文字列化します。
　撮影日時が秒まで同じものが複数ある場合、二つ目以降に"-2"のように連番を追加します。
　拡張子が異なる場合はそれ以外が同じでも別ファイルとして扱います。
　例：20180101_010101が複数ある場合、ファイル名に次のように連番を付与します。
　　　20180101_010101、20180101_010101-2、20180101_010101-3

・yyyyMMdd_[000]の場合
　[000]はアプリ独自のフォーマットです。この場合、新ファイル名を日付＋３桁（以上）の連番とします。
　[000]の場合は、連番が999以下の場合は先頭に0を付加して３桁とし、1000以上の場合は桁数が増えます。
　例: yyyyMMdd_[000]で2018/1/1のjpgデータが複数ある場合、次のように新ファイル名を設定します。
　　　20180101_001.jpg、20180101_002.jpg、20180101_003.jpg

　[000]の部分は[0]、[00]、[0000]なども使用可能です。
  [0]の場合は先頭に"0"が付加されません。
  [00]の場合は99以下の場合に先頭に"0"を付加します。

  　[再表示]を行うと一覧の表示順に1から連番を振っていきます。
　既に同じフォーマットでリネームを行っていたような場合、一覧の表示順で改めて付番されます。  
  　必要に応じて更新日時などの項目をソートしてください。　

・[.]_yyyyMMdd_[000]の場合
　[.]は[.]をフォルダ名に置き換えます。
  例: Picフォルダの場合、次のように新ファイル名を設定します。
　　　Pic_20180101_001.jpg、Pic_20180101_002.jpg、Pic_20180101_003.jpg

・{IMG}_[0000]の場合
　{文字列}は{}の中の文字列をそのままフォルダ名に適用します。
　"IMG"の場合は{}で囲まないと"M"が日付フォーマットと解釈され、月の数字に置換されます。
  例: {IMG}_[0000]でjpgデータが複数ある場合、次のように新ファイル名を設定します。
　　　IMG_0001.jpg、IMG_0002.jpg、IMG_0003.jpg 

・[fn]_yyyyMMddの場合
　[fn]は[fn]をファイル名に置き換えます。
　例: 元のファイル名が"スナップ１.jpg"の場合、次のように新ファイル名を設定します。
　　　スナップ１_20190101.jpg

・[fn]_yyyyMMdd/from/to/
  "/from/to/"は正規表現の要領で新ファイル名に含まれる文字列"from"を"to"に置き換えます。
  "/IMG//"の場合は"[fn]_yyyyMMdd"で生成した新ファイル名中の"IMG"を空文字で置換(=削除)します。
　例: 元のファイル名が"IMG_001.jpg"の場合、次のように新ファイル名を設定します。
　　　001_20190101.jpg

・from, toには正規表現による文字列を使用することができます。
　正規表現内では"\"などを使用できますが、置換後の新ファイル名に不正な文字(:/\など)が含まれるとエラーになります。
　例: [fn]_yyyyMMdd/\d+// の場合、元のファイル名の半角数字を削除し、年月日を付加します。
　  　"IMG001.jpg"の場合、IMG_20190101.jpgのようになります。

　　正規表現は単純なケースしかテストしていません。正規表現として適切に機能しない文字列が使用された場合は、
　　期待通りの置換が行われなかったり、エラーが発生したりするでしょう。

・日付フォーマット、[000]、[.]、{文字列}、/from/to/フォーマット以外の文字が含まれている場合、新ファイル名にそのまま適用されます。
  ただし、C#のDateTimeフォーマットに影響のある文字の場合は、数字に置き換わる、あるいはエラーとなる可能性があります。
　例: "yyyyMMdd 旅行 [000]"の場合、
　  "20180101 旅行 001""、"20180101 旅行 002"　

【フォーマットＴについて】

■[フォーマットT]はファイル名からファイル更新日時を取得するフォーマットです。
　書式の詳細はWebページを参照してください。

■ファイル名にフォーマットＴに合致する文字列がある場合、日時データに変換し更新日時として扱うことができます。
　[現ファイル名日時適用]がチェックされている場合に有効です。
　[ファイル名に合わせてファイル更新日時を変更]をチェックするとファイル名から抽出した日時データを更新日時に適用することができます。

　画像編集時に更新日時が変更されたり、撮影日時が未設定になったりした場合に、ファイル更新日をファイル名に合わせることができます。
　ファイル名からの日時データ抽出のテストは日本語環境のみで行います。

■C#のDateTimeの機能を使用して変換を行いますが、その仕様の全てに対応しているわけでなありません。
　・フォーマットＴで対応しているフォーマットはC#で規定されているもののうち、yMdHhms(順に年月日時時分秒)、gt(元号、午前午後)です。
　・これ以外の文字でも、C#のフォーマット文字に該当するものはフォーマット文字として扱われます。(KFzなど)　
  ・後方一致を示すためにフォーマット先頭に\"*\"を使うことができます。"*"は変換時のフォーマット文字としては扱われません。
　・上記以外はファイル名の一部として扱われます。
　・ファイル名には日時以外の文字（"旅行"など)を含めることができますが、日時文字列部分とフォーマットの文字長は同じでないと合致しません。

■[フォーマットＴ]コンボボックスに、次の７つのフォーマットを規定で用意しています。
　それぞれ例の挙げたようなファイル名に合致し、2026/01/01 12:00:00となります。
　・yyyyMMdd_HHmmss
　　"20260101_120000.jpg"、"旅行20260101_120000.jpg"、"20260101_120000_001.jpg"

　・yyyyMMdd-HHmmss
　　"20260101-120000.jpg"、"旅行20260101-120000.jpg"、"20260101-120000_001.jpg"などに合致し、2026/01/01 12:00:00となります。
　　
　・yyyyMMdd HHmmss
　　"20260101 120000.jpg"、"旅行20260101 120000.jpg"、"20260101 120000_001.jpg"

　・yyyy年MM月dd日HH時mm分ss秒
　　"2026年01月01日12時00分00秒.jpg"、"旅行2026年01月01日12時00分00秒.jpg"、"2026年01月01日12時00分00秒_001.jpg"

　・yyyy年MM月dd日ttHH時mm分ss秒
　　"2026年01月01日午前12時00分00秒.jpg"、"旅行2026年01月01日午前12時00分00秒.jpg"、"2026年01月01日午前12時00分00秒_001.jpg"

　・MM-dd-yyyy HH-mm-ss
　　"01-01-2026 12-00-00.jpg"、"Trip 01-01-2026 12-00-00.jpg"、"01-01-2026 12-00-00_001.jpg"

　・MM-dd-yyyy tthh-mm-ss
　　"01-01-2026 AM12-00-00.jpg"、"Trip 01-01-2026 AM12-00-00.jpg"、"01-01-2026 AM12-00-00_001.jpg"

■[フォーマットＴ]適用手順次の要領でフォーマットをファイル名に適用します。
　C#で規定されているフォーマット文字のうち\"yMdHhms\"を各々半角数字ひとつ(正規表現\"\\d\")に、tは任意の１文字(正規表現\".\")に対応
　フォーマットの先頭の\"*\"があり場合、後方一致のための正規表現".*"とする。変換フォーマットには含めない
　上記の対応を行いファイル名からフォーマットにマッチする部分を抜き出す。
　変換フォーマットを適用する。
　フォーマットTに合致した日時データが取得でき、実際のファイル更新日以前の場合、これをファイル更新日時として扱います。　
　例：フォーマット="yyyyMMdd_HHmmss"は次のようなフィル名から 数字8ケタ_数字6桁 の部分を抜き出し、日時に変換する。
　　　この例の場合は"20250401_101010"を抜き出し、2025年4月1日10時10分10秒の日時データに変換する。
  
■後方一致
　ほとんど使用する必要はないと思われますが、フォーマット先頭に"*"を付加することで後方一致が可能です。
　例："*yy-MM-dd"
　ファイル名"IMG01-02-03-04"の場合に最後にマッチする"02-03-04"となります。
　先頭"*"なしの場合は"01-02-03"となります。

■現ファイル名日時の適用開始日
　ファイル更新日時はシステム的には0000年以降を設定可能ですが、本アプリではQuickTimeの基準時間である1904/01/01 0時以降を有効としました。
　これより古い日付の場合、更新日時に反映し一覧に表示しますが、[変更]チェックをはずし、リネーム、ファイル更新日時変更から除外します。
　デジカメなどの撮影機器の日付設定は概ね1990年以降ですが、スキャンした古い写真のファイル名にこれ以前の日付を付ける可能性を考慮しました。

■日時データの有効範囲
　日時データは適切な値でなければデータは変換されません。
　
・日本語環境での日時の有効範囲は次のとおり
　y(年) 0~99、yy(年) 00~99、yyy(年) 000~999、yyyy(年) 0000~9999
　　　　　　  yyの場合、00~49は2000年代、50~99は1900年代に対応。
　M(月) 1~12、MM(月) 01~12
  d(日) 1~31、dd(日) 01~31
  h(時) 0~12、hh(時) 00~12 ttと併用の場合は午前は00~11時、午後は12~23時に対応。00と12は同じ扱い。
                           併用しない場合は午前のみに対応する。
  H(時) 0~23、HH(時) 00~23 ttと併用の場合はAM00~11、PM12~23のみ有効。
  m(分) 0~59、mm(分) 01~59
  s(秒) 0~59、ss(秒) 01~59
  t(午前午後) 午前、午後、AM、PM（大小文字区別なし）
  g(元号)　日本の元号のみ対応。令和、平成、昭和など。
  　　　　 "g"はの元号１文字の明、大、昭、平、令に対応。

  上記の文字種であれば文字数に自由度がありますが、日時文字列と異なる文字数の場合には期待通りの結果か、よくご確認ください。
  また、上記の範囲でもカレンダーに該当日がない日付は変換されません。(4/31や閏年以外の2/29など)

■0時、12時、24時の扱い
　午前午後の0時、12時の解釈は曖昧で、日本語、英語でも異なります。
　本アプリでは次のように扱います。
  2024-01-02 午前00:00:00 => 2024-01-02 00:00:00
  2024-01-02 午前12:00:00 => 2024-01-02 12:00:00
  2024-01-02 午後00:00:00 => 2024-01-02 12:00:00
  2024-01-02 午後12:00:00 => 2024-01-02 12:00:00

　C#では午前12時は午前0時の扱いになるため、本アプリでは午後0時に変換します。
  24時(はいずれの環境でも有効範囲外であり、日付変更にも関わるため、変換対象としません。

■AM、PMの扱い
　C#の仕様では、日本語環境では"tt"は"午前"または"午後"にマッチし、"AM"、"PM"にはマッチしません。
　しかし"AM"、"PM"が使用されることはありそうなので、"tt"使われる場合は"AM"を午前"、"PM"を"午後"に置換します。
　大文字小文字は区別しません。
　例: フォーマット"MM-dd-yyyytthh-mm-ss"をファイル名"01-15-2020AM11-14-56"に適用する場合、
　　　ttの位置にある"AM"を"午前"に置換して日時データを抽出する。

 "tt"を使用する場合は原則として"hh"を時に使用してください。
 "HH"も使用可能ですが有効範囲は午前、午後との組み合わせで異なり、適切な変換は行えないでしょう。
  
■フォーマット設定時の警告
　フォーマットＴには"yyyyMMdd"など秒を含まないものも設定できますが、ファイル更新日時に適用するには
  不適切と思われるため、[フォーマットＴ]設定時に警告を表示します。
  警告が出てもフォーマットの保存、使用は可能です。

-----------------------------------------------------------------------------