shooan
Goto Top

Sortierung von Ordnern mit Robocopy

Guten Morgen liebe Leute,

ich habe da ein kleines Problem.

Wir möchten unsere Ordner und Freigabenstruktur auf dem Fileserver neu Ordnen.

Im ersten Schritt haben wir uns also eine neue Struktur überlegt

Diese Sieht so aus

2cefb225056da25b5acd869cb8989dc8

Das Zusammentragen der Dateien Würde ich mit Robocopy machen, da ich es für sinvoll erachte und es viele Einstellmöglichkeiten bietet. Lasse mich auch gerne von einem Andern Tool überzeugen.

Mein Problem sin die Projektordner der alten Struktur.

Diese sind wie folgt aufgebaut.

Projektnummer Name

sieht dann so aus:

4199-DEF
1087-ABC
2587 GHT
7199 BFG

usw.

Nun sollen alle Projekte mit 4 in den neuen Ordner 4xxx, die mit 2... in den Ordner 2xxx und so weiter.
Dies kann man natürlich machen in dem man hergeht und für jeden Ordner eine neue Zeile Schreibt. Was leider sehr aufwändig und Fehlerintensiv sein kann.

Nun zur Frage:

Ich möchte am Liebsten die alte Freigabe als Quelle angeben und das Script geht her und sortiert die Ordner entsprechend in den neuen Projektordner ein.
Wie kann man dieses Problem denn am besten lösen?

Besten Dank für die Hilfe

Schönen Tag

Shooan

Content-ID: 286892

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

Ausgedruckt am: 26.11.2024 um 07:11 Uhr

122990
Lösung 122990 28.10.2015, aktualisiert am 29.10.2015 um 09:43:38 Uhr
Goto Top
Moin,
mit einem PS Skript lässt sich das alles lösen ....
gci c:\quelle | ?{$_.PSIsContainer -and $_.Name -Match '^\d+'} | Copy-Item -Destination {"c:\Ziel\Projekte\$($_.Name.substring(0,1))xxx\$($_.Name)"} -recurse -force  

Findest du hier im Forum auch diverse Beispiele, einfach mal die Suchfunktion anwerfen.

Gruß grexit
shooan
shooan 28.10.2015 um 10:01:04 Uhr
Goto Top
Könntest du mir das Bitte mal erklären?

PS ist nicht meine stärke, leider.
122990
122990 28.10.2015 aktualisiert um 10:05:02 Uhr
Goto Top
Zitat von @shooan:
Könntest du mir das Bitte mal erklären?
das Skript nimmt alle Unterordner aus dem Ordner c:\Quelle welche mit Zahlen beginnen, extrahiert die erste Zahl der Projektordner und schiebt sie in den passenden Ziel-Projektordner -> Nxxx
shooan
shooan 28.10.2015 um 11:12:21 Uhr
Goto Top
Ja das Läuchtet dafinitiv ein.

Nur wie verknüpfe ich das mit dem Robocopy Befehl?
122990
122990 28.10.2015 aktualisiert um 11:40:35 Uhr
Goto Top
Ja das Läuchtet dafinitiv ein.
Schon mal gut ... p.s. es heißt "leuchtet" face-wink
Zitat von @shooan:
Nur wie verknüpfe ich das mit dem Robocopy Befehl?
Wenn du Robocopy verwenden willst nimmst du stattdessen einfach eine Foreach-Schleife und baust den Befehl dort ein:
gci c:\quelle | ?{$_.PSIsContainer -and $_.Name -Match '^\d+'} | %{  
    $target = "c:\Ziel\Projekte\$($_.Name.substring(0,1))xxx\$($_.Name)"  
    robocopy $_.FullName $target "*" /E /COPYALL  
}
shooan
shooan 28.10.2015 um 11:58:34 Uhr
Goto Top
Ahh wunderbar, habe es hinbekommen.

Nur noch eine Weitere Kleine Frage.

Wenn sich Ordner in der Quelle Befinden die keine Nummer Vorranstehen haben, wie kann ich die denn in einen Ordner namens Unklar denn verschieben?
122990
Lösung 122990 28.10.2015, aktualisiert am 29.10.2015 um 09:43:45 Uhr
Goto Top
gci c:\quelle | ?{$_.PSIsContainer} | %{
  if ($_.Name -match '^\d+'){  
    $target = "c:\Ziel\Projekte\$($_.Name.substring(0,1))xxx\$($_.Name)"  
  }else{
    $target = "c:\Ziel\Projekte\unklar\$($_.Name)"  
  }
    robocopy $_.FullName $target "*" /E /COPYALL  
}