これにはスクリプトは必要ありません。Exiftool だけで実行できます。
コマンドは次のようになります。
exiftool -ext jpg -ext mov -ext jpeg -ext mpg -ext avi -ext mp4 -d '[%Y-%m-%d][%A] [%H.%M.%S].%%e' '-Filename<MediaCreateDate' '-Filename<DateTimeOriginal' FileOrDir
( ) オプションは-ext、-extension操作するファイル拡張子を制限します。
( -d)-dateFormatオプションとそれに続くフォーマット文字列は、日付/時刻タイプのタグに使用するフォーマットを Exiftool に指示します。Common Date Format Codesの下に詳細情報があります。
MediaCreateDate次の 2 つのオプションは、指定されたタグ (または)に従ってファイルの名前が変更されることを exiftool に伝えますDateTimeOriginal。同じタグへの以前の割り当て (この場合Filename) は、後の割り当てによって上書きされるため、DateTimeOriginal存在する場合はそれが使用され、そうでない場合は使用されますMediaCreateDate。どちらのアイテムも存在しない場合、マイナー エラーが発生し、ファイルの名前は変更されません。その名前のファイルが既に存在する場合も同じことが起こりますが%%c、ファイル名に増分番号を追加するために日付形式文字列に追加できます。
注意すべきことの 1 つはMediaCreateDate、動画ファイルは UTC に設定され、それを読み取るプログラムはタイムスタンプを現地時間に調整することになっていることです。Quicktime タグ ページの 4 番目の段落を参照してください。しかし、すべてのカメラ (通常は古いカメラ) が適切に設定できるわけではありません。Exiftool はタイムスタンプをそのまま返すため、正しくない可能性があります。exiftool で現地時間に合わせたい場合は、-api QuickTimeUTCオプションを追加できます。
testnameの代わりに使用したサンプル出力を次に示しfilenameます。
'X:/!temp/0615090217.jpg' --> 'X:/!temp/[2009-06-15][Monday] [02.17.00].jpg'
'X:/!temp/2013-07-18_12.19.38 - Copy.Jpg' --> 'X:/!temp/[2013-07-18][Thursday] [12.19.38].Jpg'
'X:/!temp/DSC_7689 after.JPG' --> 'X:/!temp/[2006-08-19][Saturday] [09.13.28].JPG'
'X:/!temp/FujiFilmFinePixF200EXR_F0Standard (Provia).jpg' --> 'X:/!temp/[2009-01-25][Sunday] [14.10.46].jpg'
'X:/!temp/FujiFilmFinePixS5Pro.jpg' --> 'X:/!temp/[2006-12-20][Wednesday] [07.20.58].jpg'
'X:/!temp/IMGP0713-XL.jpg' --> 'X:/!temp/[2011-03-10][Thursday] [14.10.54].jpg'
'X:/!temp/IMGP0852.jpg' --> 'X:/!temp/[2003-04-20][Sunday] [16.36.53].jpg'
'X:/!temp/IMG_0938.JPG' --> 'X:/!temp/[2000-01-02][Sunday] [03.04.10].JPG'
'X:/!temp/RCNX0001.JPG' --> 'X:/!temp/[2015-12-20][Sunday] [09.09.05].JPG'
'X:/!temp/Test1.mp4' --> 'X:/!temp/[2015-12-25][Friday] [15.46.15].mp4'
'X:/!temp/Test4.jpg' --> 'X:/!temp/[2010-07-05][Monday] [12.53.36].jpg'
'X:/!temp/Test4.mp4' --> 'X:/!temp/[2014-11-11][Tuesday] [11.11.11].mp4'
'X:/!temp/tif.jpg' --> 'X:/!temp/[2003-03-03][Monday] [03.03.03].jpg'
'X:/!temp/xyzzy.jpg' --> 'X:/!temp/[2012-04-04][Wednesday] [04.04.04].jpg'
これは、Linux/Mac で bash を使用することを前提としています。Windows CMD では、一重引用符が二重引用符に変更されます。-r( -recurse) オプションを追加して、サブディレクトリに再帰します。