User Tools

Site Tools


Sidebar


Здравствуйте!

Меня зовут Михаил!
Я системный администратор
и наполняю эту wiki,
решая разнообразные IT-задачки.

Моя специализация - виртуализация!

Я всегда готов помочь Вам
наладить IT-инфраструктуру
за скромное вознаграждение!

mike@autosys.tk
+7 (910) 911-96-23

ms_windows_ms_sql:powershell_script_to_rename_photos_based_on_date_taken

Вот мой вариант powershell скрипта для переимнования фоток, чтобы в имени файла была указана дата и время, когда была сделана фотография. Информация берется из EXIF файла.
Перед запуском следует изменить имя папки $strDirectory в которой будет происходить переименование.

$ErrorActionPreference = "SilentlyContinue"
# Set image folder to process
$strDirectory = "E:\Cloud.Mail.Ru\Photos"

function ConvertAsciiArrayToString($CharArray) {  
 $ReturnVal = ""  
 foreach ($Char in $CharArray) {  
  $ReturnVal += [char]$Char  
 }  
 return $ReturnVal  
}  

# Load Windows library to access EXIF data
[void][Reflection.Assembly]::LoadWithPartialName("System.Drawing")

# Loop through all JPGs and JPEGs in the given image folder
Get-ChildItem -Recurse -Path "$strDirectory\*" -Include *.jpg,*.jpeg | ForEach {

  # Load current image into Powershell as bitmap object
  $img = New-Object -TypeName system.drawing.bitmap -ArgumentList $_.FullName

    # Get EXIF data with ID 36867 - which is "DateTimeOriginal"
    $intExif = [Byte[]]$img.GetPropertyItem(36867).Value
 
    if ($intExif -ne $null) {
         $Year = ConvertAsciiArrayToString $intExif[0..3]  
         $Month = ConvertAsciiArrayToString $intExif[5..6]  
         $Day = ConvertAsciiArrayToString $intExif[8..9]  
         $Hour = ConvertAsciiArrayToString $intExif[11..12]  
         $Minute = ConvertAsciiArrayToString $intExif[14..15]  
         $Second = ConvertAsciiArrayToString $intExif[17..18]

    $Newname = $Year + "_" + $Month + "_" + $Day + "-" + $Hour + "h_" + $Minute + "m_" + $Second + "s" + $_.Extension
#    Rename-Item ( $_.FullName | Out-String ), ( $Newname | Out-String )
 $img.Dispose()
        if ( $_.Name -ne $NewName) {
            Rename-Item -Path $_.FullName -NewName $Newname -Force -Verbose
         }
      }

#Write-Host "File: " $_.Name", New Name: " $NewName
}

Discussion

Enter your comment. Wiki syntax is allowed:
G M V​ R F
 
ms_windows_ms_sql/powershell_script_to_rename_photos_based_on_date_taken.txt · Last modified: 2017/05/16 06:51 by admin