ファイルの更新日をExif情報内の撮影日時に変更する(PowerShell)
PowerShellを使って、現在のフォルダ内にあるjpgファイルにおいて、ファイルの更新日を Exif の撮影日時に変更する。
ちょっと力業。
Add-Type -AssemblyName System.Drawing;
$files = Get-Item *.jpg;
foreach ($f in $files) {
$img = New-Object Drawing.Bitmap($f.FullName);
$byteAry = ($img.PropertyItems | Where-Object{$_.Id -eq 36867}).Value;
$img.Dispose();
$time = [System.Text.Encoding]::ASCII.GetString($byteAry);
$timeAry = $time.Split(": ");
$createTime = [String]::Format("{0}/{1}/{2} {3}:{4}:{5}",$timeAry[0],$timeAry[1],$timeAry[2],$timeAry[3],$timeAry[4],$timeAry[5]);
Set-ItemProperty $f -name LastWriteTime -value $createTime;
}
(実際には1行で・・・)
Add-Type -AssemblyName System.Drawing; $files = Get-Item *.jpg; foreach ($f in $files) { $img = New-Object Drawing.Bitmap($f.FullName); $byteAry = ($img.PropertyItems | Where-Object{$_.Id -eq 36867}).Value; $img.Dispose(); $time = [System.Text.Encoding]::ASCII.GetString($byteAry); $timeAry = $time.Split(": "); $createTime = [String]::Format("{0}/{1}/{2} {3}:{4}:{5}",$timeAry[0],$timeAry[1],$timeAry[2],$timeAry[3],$timeAry[4],$timeAry[5]); Set-ItemProperty $f -name LastWriteTime -value $createTime; }
CD-Rに焼いて店頭でプリントしようと思った際に、デフォルトのソート順が「更新日順」だったので、わかりやすいように更新日を撮影日に置き換えてしまえ、と・・・(普段はWeb経由でプリントを依頼するのですが、CD-Rに焼いて配布する必要が生じまして)。ちなみに選択できるソート順が「更新日(降順)」「更新日(昇順)」「ファイル名」でした。
多分、これでファイルを探しやすくなったのではないかな、と。
(参考)PowerShellメモ 画像のExif情報を読み込む
Recent Comments