Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Дата съемки

Ответить
Настройки темы
PowerShell - [решено] Дата съемки

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Изображения
Тип файла: jpg дата съемки.JPG
(43.7 Kb, 7 просмотров)
Возникло желание массово переименовать фотографии в соответствии с временем съемки оных, однако, выдрать этот параметр в какую-нибудь переменную я не нашел возможности. Было бы проще если он совпадал с датой создания или изменения или последнего обращения, но нет, эта дата совершенно независима от тех. Короче, нужно получить из файла дату съемки и переименовать по этой дате файл.

Отправлено: 12:32, 12-10-2016

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
add-type -AssemblyName System.Drawing
$file = New-Object System.Drawing.Bitmap("123.JPG")
[System.Text.Encoding]::ASCII.GetString($file.GetPropertyItem(36867).Value)
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:39, 12-10-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
PS D:\!test> add-type -AssemblyName System.Drawing
$file = New-Object System.Drawing.Bitmap("123.JPG")
[System.Text.Encoding]::ASCII.GetString($file.GetPropertyItem(36867).Value)
New-Object : Исключение при вызове ".ctor" с "1" аргументами: "Недопустимый параметр."
строка:2 знак:19
+ $file = New-Object <<<<  System.Drawing.Bitmap("123.JPG")
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvocationException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
 
Нельзя вызвать метод для выражения со значением NULL.
строка:3 знак:62
+ [System.Text.Encoding]::ASCII.GetString($file.GetPropertyItem <<<< (36867).Value)
    + CategoryInfo          : InvalidOperation: (GetPropertyItem:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Отправлено: 13:08, 12-10-2016 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Так укажите полный путь к файлу с фотографией.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:37, 12-10-2016 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Elven, посмотрите в любом редакторе, есть ли в данном изображении Exif, и есть ли в нём дата съёмки. Полагаю, что нет. Пардон, в свойствах файла у Вас указана…

Отправлено: 13:42, 12-10-2016 | #5


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Kazun, спасибо, стало понятнее. Просто запускал скрипт из папки где находился файл, полагал имени будет достаточно.

Отправлено: 14:48, 12-10-2016 | #6


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Теперь возник другой вопрос, наверное, глупый, но сходу как его решить я что-то не пойму: как изменить формат выводимой даты? выводится что-то вроде 2014:07:27 11:27:49 , а нужно 20140727 11_27_49. Или это просто так не решается и нужно строку потрошить?

Отправлено: 15:36, 12-10-2016 | #7


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
PS (STA) >  [datetime]::ParseExact("2014:07:27 11:27:49","yyyy:MM:dd HH:mm:ss",$Null).ToString('yyyyMM dd_HHmmss')
201407 27_112749

Отправлено: 15:45, 12-10-2016 | #8


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Kazun, аналогичным способом пробовал, но что-то я видно делаю не так:
Код: Выделить весь код
add-type -AssemblyName System.Drawing
Get-ChildItem d:\test\*.jpg | ForEach-Object {
$file = New-Object System.Drawing.Bitmap($_.FullName)
$pdate = [System.Text.Encoding]::ASCII.GetString($file.GetPropertyItem(36867).Value)
[datetime]::ParseExact($pdate,"yyyy:MM:dd HH:mm:ss",$null).ToString('yyyyMMdd HH_mm_ss')
}
получаю такую ошибку
Код: Выделить весь код
Исключение при вызове "ParseExact" с "3" аргументами: "Строка не распознана как действительное значение DateTime."
строка:5 знак:23
+ [datetime]::ParseExact <<<< ($pdate,"yyyy:MM:dd HH:mm:ss",$null).ToString('yyyyMMdd HH_mm_ss')
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Отправлено: 15:53, 12-10-2016 | #9


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
[datetime]::ParseExact($pdate,"yyyy:MM:dd HH:mm:ss`0",$Null).ToString('yyyyMM dd_HHmmss')
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:10, 12-10-2016 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Дата съемки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Переименование упорядоченного по дате съемки файлов bazik83 Скриптовые языки администрирования Windows 4 28-12-2013 10:10
Ошибка - Дата сбрасывается eXstra Microsoft Windows 2000/XP 18 12-01-2013 02:38
Режим съемки документов firedevil Цифровое изображение 3 22-01-2012 11:19
Качество съемки Guest Хочу все знать 2 16-08-2004 22:26
Системная дата VladNik Microsoft Windows 95/98/Me (архив) 2 07-08-2002 01:35




 
Переход