Jump to content

xyxy_yx

Members
  • Gesamte Inhalte

    2
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt 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...