У меня есть скрипт, который использует данные EXIF из файла JPG, чтобы найти значение DateTaken
.Найдя данные, поместите данные в переменные $Year
и $Month
.
$objShell = New-Object -ComObject Shell.Application
$folders = (Get-ChildItem G:\ServerFolders\Photos\UnSorted\ -Directory -Recurse -force).FullName
foreach ($Folder in $folders) {
$objfolder = $objShell.Namespace($folder)
foreach ($file in $objFolder.Items()) {
if ($objfolder.GetDetailsOf($file, 156) -eq ".jpg") {
$yeartaken = ($objFolder.GetDetailsOf($File, 12)).Split("/")[2].Split(" ")[0]
$month = $objFolder.GetDetailsOf($File, 12).Split("/")[1]
$monthname = (Get-Culture).DateTimeFormat.GetMonthName($month)
Write-Host $file.Name
}
}
}
Таким образом, если для файла задано DateTaken как 06/10/2016, $yeartaken
равно 2016
и $month
is 10
I, затем Get-Culture
, чтобы преобразовать 10 в октябрь.Это не работает, потому что он видит $month
в виде строки.
Cannot convert argument "month", with value: "10", for "GetMonthName" to
type "System.Int32": "Cannot convert value "10" to type "System.Int32".
Error: "Input string was not in a correct format.""
At line:1 char:3
+ (Get-Culture).DateTimeFormat.GetMonthName($month)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
Я пытался преобразовать его в целочисленное значение, используя приведение или преобразование, но по какой-то причине он не будет преобразован.
PS> [int]$Test = $month
Cannot convert value "10" to type "System.Int32". Error: "Input string was
not in a correct format."
At line:1 char:1
+ [int]$Test = $month
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException