Jump to content

xyxy_yx

Members
  • Gesamte Inhalte

    2
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von xyxy_yx

  1. 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 $ordner = Get-ScriptDirectory $fileordner = "$ordner\sort" $Dateien = dir $fileordner -File | Add-ExtendedFileProperties -PropertyExtended "Aufnahmedatum" foreach ( $Datei in $Dateien){ $datum=$Datei.Aufnahmedatum -replace '([^0-9.: ])','' try{ $Verz=[DateTime]::ParseExact($datum,'dd.MM.yyyy HH:mm', [System.Globalization.CultureInfo]::InvariantCulture).ToString("yyyy.MM") if (!(test-path "$ordner\$Verz")){md "$ordner\$Verz" -Force} move-item $Datei.FullName -Destination "$ordner\$Verz" -EA Ignore } catch{} }
  2. 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 werden mein 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
×
×
  • Neu erstellen...