Вот мой вариант 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