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!
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!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 318528
Url: https://administrator.de/forum/ps-skript-anhand-dateinamen-und-zusaetzlich-dateityp-mapping-verschieben-318528.html
Ausgedruckt am: 12.05.2025 um 01:05 Uhr
2 Kommentare
Neuester Kommentar

$newfolder = "$ziel\$($mapTyp.($_.Extension.replace('.','')))\$($matches[1])\$($matches[3])\$($mapMP.($matches[2]))"