xyxy_yx
-
Gesamte Inhalte
2 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von xyxy_yx
-
-
Hallo,
ich möchte alle Fotos (jpg) nach Aufnahmedatum in datumbenannte Ordner verschieben
und eventuell diesen auch erstellen, wenn er nicht vorhanden ist. Die Dateien liegen
im Ordner "c:\Test\sort" und die datumbenannte Ordner sollen in "c:\Test" erstellt
werden.
Beispiel:
aaaaaa.jpg Erstellt am 01.04.2016 soll in den Ordner 2016.04 verschoben werden
bbbbbb.jpg Erstellt am 01.05.2016 soll in den Ordner 2016.05 verschoben werdenmein noch nicht funktionierendes Skript in Powershell:
function Get-ScriptDirectory { $Invocation = (Get-Variable MyInvocation -Scope 1).Value Split-Path $Invocation.MyCommand.Path } function Add-ExtendedFileProperties{ <# .SYNOPSIS Fügt erweiterte Eigenschaften von Dateien an das Objekt in der Pipline hinzu .DESCRIPTION Extrahiert erweiterte Eigenschaften von Dateien wie z.B. Exif-Daten, Musik- bzw. Filmdetails .EXAMPLE Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties -PropertyExtended "Bildhöhe","Bildbreite","Datenrate" | ft Name,Bildhöhe,Bildbreite,Datenrate Fügt alle nur die Eigenschaften "Bildhöhe","Bildbreite","Datenrate" als zusätzliche Spalten dem Objekt in der Pipline hinzu .EXAMPLE Get-ChildItem "C:\Temp" | Add-ExtendedFileProperties | fl * Fügt alle verfügbaren erweiterten Eigenschaften dem Objekt in der Pipline hinzu .PARAMETER PropertyExtended Mit diesem Parameter geben sie eine Komma-Separierte Liste von Eigenschaften an welche sie erhalten möchten. -PropertyExtended "Bildhöhe","Bildbreite","Bitrate" #> param( [Parameter(Mandatory=$true,ValueFromPipeline= $True,ValueFromPipelineByPropertyName=$True)] $fileItem, [String[]] $PropertyExtended = "ALL" ) begin { $shellObject = New-Object -Com Shell.Application $itemProperties = $null } process { if($fileItem.PsIsContainer) { $fileItem return } $directoryName = $fileItem.DirectoryName $filename = $fileItem.Name $folderObject = $shellObject.NameSpace($directoryName) $item = $folderObject.ParseName($filename) if(-not $itemProperties) { $itemProperties = @{} $counter = 0 $columnName = "" if ($PropertyExtended -eq "ALL"){ #get all properties do { $columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter) if($columnName) { $itemProperties[$counter] = $columnName } $counter++ }while($columnName) }else{ #get user defined properties do { $columnName = $folderObject.GetDetailsOf($folderObject.Items, $counter) foreach($name in $PropertyExtended){ if ($columnName.toLower() -eq $name.toLower()){ $itemProperties[$counter] = $columnName } } $counter++ }while($columnName) } } foreach($itemProperty in $itemProperties.Keys) { $fileItem | Add-Member NoteProperty $itemProperties[$itemProperty] ` $folderObject.GetDetailsOf($item, $itemProperty) -ErrorAction ` SilentlyContinue } $fileItem } } $ordner = Get-ScriptDirectory $fileordner = "$ordner\sort" dir $fileordner -File |Add-ExtendedFileProperties -PropertyExtended "Aufnahmedatum" | group {$_.Aufnahmedatum.Substring(0,10)} | group {Get-Date $_.Aufnahmedatum -format yyyy.MM} | %{ $ziel = "$ordner\$($_.Name)" if (!(test-path $ziel)){md $ziel -Force} $_.Group | move-item -Destination $ziel -EA Ignore }
Wenn ich an dieser Stelle
... dir $fileordner -File |Add-ExtendedFileProperties -PropertyExtended "Aufnahmedatum" | group {$_.Aufnahmedatum.Substring(0,10)} | group {Get-Date $_.Aufnahmedatum -format yyyy.MM} | %{ ...
group {$_.Aufnahmedatum.Substring(0,10)}
weglasse gibt es folgendenFehler bei Get-Date:
group : Cannot bind parameter 'Date'. Cannot convert value "17.05.2015 12:54" to type "System.DateTime". Error: "Die Zeichenfolge wurde nicht als gültiges DateTime erkannt." At C:\Test\DatumSortieren.ps1:82 char:88 + ... nahmedatum" | group {Get-Date $_.Aufnahmedatum -format yyyy.MM} | %{ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidResult: (aaaaaa.JPG:PSObject) [Group-Object], ParameterBindingE xception + FullyQualifiedErrorId : ExpressionEvaluation,Microsoft.PowerShell.Commands.GroupObjectCommand
hoffe jemand kann mir weiterhelfen
schon mal danke im Voraus
Bilddateien per Powershell-Skript nach Aufnahmedatum sortiert in Ornder verschieben
in Windows Forum — Scripting
Geschrieben
Habe die Lösung schon gefunden. Hier nochmal der Code, falls ihn wer benötigt:
function Get-ScriptDirectory siehe oben
function Add-ExtendedFileProperties siehe oben