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

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

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

Аватара для Elven

Ветеран


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

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


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

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

 

Аватара для Elven

Ветеран


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

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


Супер, самое то что нужно. А можно пояснить что это за `0 и почему он нужен?

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



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

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


Аватара для Elven

Ветеран


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

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


Полагал, что переименование в таком скрипте будет самым простым делом, но похоже рано возрадовался:
Код: Выделить весь код
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)
$nfname = [datetime]::ParseExact($pdate,"yyyy:MM:dd HH:mm:ss`0",$null).ToString('yyyyMMdd HH_mm_ss')
Rename-Item -Path $_.FullName -NewName ($nfname + $_.Extension)
}
Либо я опять что-то делаю не так, либо скрипт цепляется за файл, ибо:
Код: Выделить весь код
Rename-Item : Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
строка:6 знак:12
+ Rename-Item <<<<  -Path $_.FullName -NewName ($nfname + $_.Extension)
    + CategoryInfo          : WriteError: (D:\test\888601.jpg:String) [Rename-Item], IOException
    + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand

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


Ветеран


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

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


Перед переименованием:
Код: Выделить весь код
 $file.Dispose()
Это сообщение посчитали полезным следующие участники:

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


Аватара для Elven

Ветеран


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

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


Вот теперь все супер. Финальная версия:
Код: Выделить весь код
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)
$npname = [datetime]::ParseExact($pdate,"yyyy:MM:dd HH:mm:ss`0",$null).ToString('yyyyMMdd HH_mm_ss')
$file.Dispose() 
Rename-Item -Path $_.FullName -NewName ($npname + $_.Extension)
}

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


Ветеран


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

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


Цитата Elven:
Финальная версия: »
Неа . Финальная будет тогда, когда Вы начнёте учитывать возможность наличия одинакового даты/времения в Exif у нескольких файлов.

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


Аватара для Elven

Ветеран


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

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


Iska, для конкретно этой задачи это финальная версия, здесь одинаковой даты-времени не было, так уж получилось, что это было известно заранее.
А может кто-нибудь объяснит, все же, что это за `0?

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


Ветеран


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

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


0x0132 DateTime ascii string 20 Date/Time of image . Data format is "YYYY:MM:DD HH:MM:SS"+0x00, total 20bytes.
Это сообщение посчитали полезным следующие участники:

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



Компьютерный форум 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




 
Переход