PowerShell, WhatsApp и восстановление даты создания файлов

В WhatsApp есть очень полезное свойство с именованием файлов с датой получения и некоторого дополнительного суффикса в виде IMG-20171201-WA0000.jpg, что очень помогает с перемещением фото и видео архива на другой носитель (внутреннюю карту памяти), так как основная память на Android имеет свойство очень быстро заканчиваться. Благодаря созданию имен в виде дат можно легко отыскать нужную фотографию по дате и резервировать фотографии не боясь перезаписать одноименные файлы. К сожалению встроенные приложения для фотокамеры всегда нумеруют фотографии с единицы, что доставляет массу неудобств.

Из-за файлового менеджера при перемещении фотографий у всех файлов проставилась дата создания и модификации с текущей датой из-за чего в фото галереи сбилась вся историческая последовательность.

Поиск в интернете выдал несколько программ для изменения атрибутов дат:
1) File Attribute Changer http://www.hoaitech.com/
2) Attribute Changer https://www.petges.lu/
3) BulkFileChanger и FileDate Changer от NirSoft http://www.nirsoft.net/utils/bulk_file_changer.html
4) Total Commander

К сожалению все программы умеют только задавать дату исходя из текущей даты или заданной даты в атрибуте файла с добавлением вычислений в виде сдвига, и ни одна не умеет работать с шаблоном на основе имени файла.

Решение было написано за пару минут на PowerShell с учетом поиска в Google.

Открываем PowerShell_Ise.exe и вставляем наш скрипт.
Аналогично можно поступить с видео файлами mp4

get-childitem -Path “d:\WhatsApp\Media\WhatsApp Photo\IMG-*.jpg” | % {

$date = $_.Name.Substring(4,4) + “-” + $_.Name.Substring(8,2) + “-” + $_.Name.Substring(10,2)
write-host $_.Name ” -> ” $date

$d = (get-date $date)
# CreationTime, LastWriteTime
(Get-ItemProperty $_.FullName).CreationTime = $d
(Get-ItemProperty $_.FullName).LastWriteTime = $d
}

Статья про атрибуты файла на MSDN:
https://msdn.microsoft.com/ru-ru/library/system.io.filesysteminfo_properties(v=vs.110).aspx

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *