pixel0815
Goto Top

Powershell Skript das nach "Patterns" in Dateinamen sucht und dann in einen Ordner verschiebt

Hallo zusammen,

ich suche was für Powershell das verschiedene Dateien die zur Unterscheidung immer eine 4-Stellige Zahl oder eine vier Buchstaben als Kürzel vorne weg hat.
Die Dateien liegen in einem zentralen Ordner. Ich habe sowas mit einer Batch aber das läuft nicht so recht rund wie ich das möchte. Aktuell benötige ich 8 Suchpatterns um die Dateien auseinander zu fischen und in den entsprechenden Zielordner abzulegen.
Hat da jemand was einfaches?

Mit Batch würde ich das rausfiltern der Dateinamen eventuell mit
dir v:\STA*.sta /od /a-d >z.txt
erledigen und mit einer for schleife die Datei dann zerstückeln usw. Aber ich glaube mit der PS geht das sicher einfacher.

Liebe Grüße
Heiko

Content-Key: 268477

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

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

Member: colinardo
colinardo Apr 07, 2015 updated at 08:24:37 (UTC)
Goto Top
Moin Heiko
Zitat von @pixel0815:
ich suche was für Powershell das verschiedene Dateien die zur Unterscheidung immer eine 4-Stellige Zahl oder eine vier
Buchstaben als Kürzel vorne weg hat.
Komische Beschreibung ...
Hat da jemand was einfaches?
gci 'c:\Ordner\*.sta' %{  
    if ($_.Basename -match '^\d{4}') { move-item $_.Fullname 'c:\Destination1';continue}  
    if ($_.Basename -match '^STA') { move-item $_.Fullname 'c:\Destination2';continue}  
    # usw.
}
Regular Expression Pattern natürlich an deine Bedürfnisse anpassen...

Gibt auch noch andere Möglichkeiten, aber ich kenne deine Dateistruktur in der Hinsicht leider nicht.

Grüße Uwe
Member: pixel0815
pixel0815 Apr 07, 2015 at 08:28:25 (UTC)
Goto Top
Guten Morgen Uwe,

Ok. Das liegt sicher noch am mangelnden Kaffeekonsum.

Also..

Es gibt einen Ordner, dort werden Dateien gesammelt. In einem Unterordner Ordner befinden sich ein Ordner wo spezielle Dateien liegen, die Dateien die alle mit einem Vierstelligen Kürzel (entweder zahlen oder Buchstaben) anfangen. Dateien mit bestimmten Prefixe Beispiel: 0010, 0009,0026,0024,0022,0023,0011,0025 sollen von dem Ordner in einen anderen verschoben werden weil die dort gesondert weiterbearbeitet werden müssen.


Ordnerstruktur:

Hauptordner
Sammelordner
Verschiedene Pool Ordner
Externer Ordner x (ziel )
Member: colinardo
Solution colinardo Apr 07, 2015 updated at 09:28:20 (UTC)
Goto Top
Na dann lässt ich das etwa so vereinfachen...
$mapping = @{
"0010*"="C:\Destination1"  
"0009*"="C:\Destination2"  
"0026*"="C:\Destination3"  
}
$mapping.GetEnumerator() | %{
    If(!(Test-Path $_.Value)){md $_.Value}
    move-item "c:\Sammelordner\$($_.Name)" -Destination $_.Value  
}
Member: pixel0815
pixel0815 Apr 07, 2015 at 09:28:17 (UTC)
Goto Top
Perfekt :o)