|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Дата съемки |
|
PowerShell - [решено] Дата съемки
|
Ветеран Сообщения: 992 |
Профиль | Сайт | Отправить PM | Цитировать
Возникло желание массово переименовать фотографии в соответствии с временем съемки оных, однако, выдрать этот параметр в какую-нибудь переменную я не нашел возможности. Было бы проще если он совпадал с датой создания или изменения или последнего обращения, но нет, эта дата совершенно независима от тех. Короче, нужно получить из файла дату съемки и переименовать по этой дате файл.
|
|
Отправлено: 12:32, 12-10-2016 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Супер, самое то что нужно. А можно пояснить что это за `0 и почему он нужен?
|
Отправлено: 16:12, 12-10-2016 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить 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
|
Профиль | Отправить PM | Цитировать |
Отправлено: 16:58, 12-10-2016 | #13 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить 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
|
Профиль | Отправить PM | Цитировать Цитата Elven:
|
|
Отправлено: 21:13, 12-10-2016 | #15 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Iska, для конкретно этой задачи это финальная версия, здесь одинаковой даты-времени не было, так уж получилось, что это было известно заранее.
А может кто-нибудь объяснит, все же, что это за `0? |
Отправлено: 12:14, 13-10-2016 | #16 |
Ветеран Сообщения: 1259
|
Профиль | Отправить 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 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Переименование упорядоченного по дате съемки файлов | 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 |
|