cleverm
Goto Top

PS-Skript anhand Dateinamen und zusätzlich Dateityp (Mapping) verschieben

Hallo Community,

ich habe ein Script das mir anhand des Dateinamens und Quell-Ordnerstruktur verschiebt und soweit auch funktioniert.
Jetzt soll es jedoch zusätzlich anhand des Dateityps diese in unterschiedliche Ordner verschieben.

Dateitypen sind immer nur Textdateien, csv-Dateien und die dazugehörigen Importprotokolle als
.txt /.csv & .txt_imp.log /.csv_imp.log


Die Dateinamen haben die Struktur XYZABC_1234567890123_1234567890123_JJJJMMTT_... + Dateityp
... kann beliebig sein.

Powershell-Version 2 wird leider vorgegeben, also 3 oder größer nicht unterstüzt!

Im Skript unten entspricht $mapTyp dem Dateityp. in der 1. Zeile müsste jetzt .txt eben durch den Befehl dafür ersetzt werden, was ich jedoch nicht hinkriege. $newfolder würde dann ganz einfach mit dem zusätzlichen Unterordner $mapTyp ergänzt .

$quelle= 'c:\temp\1'
$ziel = 'D:\'

$mapTyp = @{
'txt' = 'Nachrichten'
'csv' = 'Nachrichten'
'log' = 'Logs'
}

$mapMP = @{
'1234567890123' = 'a'
'2345678901234' = 'b'
'3456789012345' = 'c'
}


gci "$quelle\a*\Done\*.*" | ?{$_.Fullname -match '\\([^\\]+)\\Done\\.*?(\d{13})_\d{13}_(\d{4}).*\.txt$'} | %{
$newfolder = "$ziel\$($matches[1])\$($matches[3])\$($mapMP.($matches[2]))"
if (!(Test-Path $newfolder)){md $newfolder -Force}
move-item $_.Fullname -Destination $newfolder -Force
}

Kann mir hier jemand helfen?
Wäre sehr dankbar!

Content-Key: 318528

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

Printed on: April 25, 2024 at 11:04 o'clock

Mitglied: 131223
Solution 131223 Oct 20, 2016 updated at 10:32:30 (UTC)
Goto Top
$newfolder = "$ziel\$($mapTyp.($_.Extension.replace('.','')))\$($matches[1])\$($matches[3])\$($mapMP.($matches[2]))"  
und im Regex am Ende das "txt" wegmachen, da ja ansonsten nur Textdateien genommen werden.
Member: cleverm
cleverm Oct 20, 2016 at 11:31:47 (UTC)
Goto Top
Vielen Dank für die schnelle Hilfe.
Hat super funktioniert.