jenny82
Goto Top

PS: Dateien anhand des Dateityps und des Änderungsdatums in Ordner verschieben

Hallo zusammen,

Mein Skript sieht bisher so aus:

$quelle = 'c:\Test'
$ziel_str = 'd:\Test'

  1. Dateityp -
$mapTyp = @{
'txt' = 'Nachrichten'
'csv' = 'Nachrichten'
'xml' = 'Nachrichten'
'log' = 'Logs'
}

$Dateien = gci $quelle\*.* | ?{!$_.PSIsContainer-and $_.LastWriteTime}
foreach ($Datei in $Dateien){
$ziel = "$ziel_str\$($mapTyp.($_.Extension.replace('.','')))\Wetterdaten\$($Datei.LastWriteTime.Year)"
if (!(Test-Path $ziel)){md $ziel -Force | out-null}
move-item $Datei.Fullname -Destination $ziel -Force
}


Was jetzt leider nicht funktioniert, ist das die Dateien in den Sub-Ordner Nachrichten bzw. Logs aufgrund des Dateityps verschoben werden.

D. h. die Dateien werden verschoben nach:

d:\Test\Wetterdaten\2015
d:\Test\Wetterdaten\2016

anstatt wie gewünscht:

d:\Test\Nachrichten\Wetterdaten\2015
d:\Test\Nachrichten\Wetterdaten\2016
d:\Test\Logs\Wetterdaten\2015
d:\Test\Logs\Wetterdaten\2016


Kann mir jemand bitte helfen?

Viele Grüße und Danke

Jenny

Content-ID: 320325

Url: https://administrator.de/contentid/320325

Ausgedruckt am: 25.11.2024 um 06:11 Uhr

131381
Lösung 131381 08.11.2016 aktualisiert um 17:36:24 Uhr
Goto Top
Zuviel Copy n' Paste ist nicht gut für die Figur face-wink
$_.Extension.replace('.','')
sollte
$Datei.Extension.replace('.','')
lauten.

Und was soll das hier???:
?{!$_.PSIsContainer-and $_.LastWriteTime}
Erstens fehlt da ein Blank hinter "Container" und nur $_.LastWriteTime bewirkt nichts wenn du es nicht mit etwas vergleichst.

Gruß
TlBERlUS
TlBERlUS 09.11.2016 um 08:55:22 Uhr
Goto Top
Moin,

bitte Quellcode immer mit Code-Tags versehen.

clear-host

$source = ".\Desktop\test"  
$destination = ".\Desktop\ziel"  
$files = gci $source

foreach($f in $files){
    $date = ($f.LastWriteTime).Year
    $extension = $f.Extension
    if($extension -eq ".log"){  
        $subfolder = "Log"  
    }else{
        $subfolder = "Nachrichten"  
    }
    $search = Test-Path "$destination\$subfolder\$date"  
    if($search -eq $false){
        New-Item "$destination\$subfolder\$date" -ItemType directory  
    }
    move-Item $source\$f -Destination "$destination\$subfolder\$date"  
}