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