matze-it 10 Geschrieben 14. Oktober 2015 Melden Teilen Geschrieben 14. Oktober 2015 Hallo Gemeinde, ich bin selbst nicht so der Skripter, daher poste ich mal hier. Ich habe eine Verzeichnisstruktur in der eine riesige Menge Ordner mit Unterordnern stecken. Hier ein Beispiel: \\Server\Freigabe\Ordner1\Ordner2\abc\def oder auch \\Server\Freigabe\Ordner1\Ordner2\Ordner3\abc\def Die Ordnerstruktur soll ab abc woanders hinkopiert werden. Ich hab allersdings keine Ahnung wie ich das hinbekommen soll. Der Order abc kann auch mal anders heißen, def bleibt hingegen immer gleich. Ich bräuchte also ein Skript, dass nach dem Ordner def sucht und den dann mitsamt dem Ordner darüber (abc) kopiert. Jemand ne Idee? Zitieren Link zu diesem Kommentar
testperson 1.662 Geschrieben 14. Oktober 2015 Melden Teilen Geschrieben 14. Oktober 2015 Hi, ein Ansatz so auf die Schnelle wäre "gci \\Server\Pfad -Recurse -Filter "def" -Directory" und dann noch ein wenig for-each. Gruß Jan Zitieren Link zu diesem Kommentar
MurdocX 933 Geschrieben 14. Oktober 2015 Melden Teilen Geschrieben 14. Oktober 2015 Oder um eine Verzeichnisstruktur zu Spiegel kannst du auch "robocopy Quelle Ziel /MIR" verwenden Zitieren Link zu diesem Kommentar
matze-it 10 Geschrieben 15. Oktober 2015 Autor Melden Teilen Geschrieben 15. Oktober 2015 (bearbeitet) Hallo zusammen, Robocopy war auch mein Gedanke, leider erwische ich da die passenden Verzeichnisse nicht aufgrund der oben beschriebenen Verzeichnisstruktur :-( @Testperson: Kannst du mir da etwas mehr helfen ? Hab da null Plan drin. bearbeitet 15. Oktober 2015 von matze-it Zitieren Link zu diesem Kommentar
NilsK 2.921 Geschrieben 15. Oktober 2015 Melden Teilen Geschrieben 15. Oktober 2015 (bearbeitet) Moin, ist die Ordnerstruktur fest oder verändert die sich? Wenn sie fest ist, könntest du die Ordnerpfade selbst mit einem dir-Kommando in eine Textdatei schreiben. Diese Textdatei filterst du mit find nach dem Ordnernamen "def". Damit hättest du dann nur die def-Ordner. Diese Datei bearbeitest du dann mit Excel und lässt dir für jeden Ordner ein robocopy-Kommando erzeugen. Vorgehen wie hier: [Excel: Admins unbekannter Liebling | faq-o-matic.net]http://www.faq-o-matic.net/2008/01/19/excel-admins-unbekannter-liebling/ Damit löst du die Aufgabe ohne großes Scripting und ohne die Unwägbarkeiten, die bei Programmschleifen so entstehen können. Gruß, Nils bearbeitet 15. Oktober 2015 von NilsK Zitieren Link zu diesem Kommentar
matze-it 10 Geschrieben 15. Oktober 2015 Autor Melden Teilen Geschrieben 15. Oktober 2015 Hallo Nils, die Struktur ist leider erst in der tiefsten Ebene gleich, ansonsten immer dynamisch :-( Zitieren Link zu diesem Kommentar
Dukel 451 Geschrieben 15. Oktober 2015 Melden Teilen Geschrieben 15. Oktober 2015 Mit Powershell: get-childitem \\Server\Freigabe -recurse | ? { ($_.PsIsContainter) -or ($_.Name -eq 'def') } Wobei ich das Kopieren per Robocopy machen würde, aber mit Powershell kannst du Robocopy mit entsprechenden Parametern starten. Zitieren Link zu diesem Kommentar
NilsK 2.921 Geschrieben 16. Oktober 2015 Melden Teilen Geschrieben 16. Oktober 2015 (bearbeitet) Moin, die Struktur ist leider erst in der tiefsten Ebene gleich, ansonsten immer dynamisch :-( wie jetzt - die Ordnerstruktur verändert sich im laufenden Betrieb? Oder wie? Auch mit einer Skriptschleife müsstest du ja auf irgendeinem Stand ansetzen. Das kriegt man natürlich hin, aber es erfordert eben einiges an Scripting-Kenntnissen und Entwicklungsaufwand, vom Testen nicht zu sprechen. Die Lösung, die ich vorschlage, macht im Prinzip dasselbe, nur mit einer "statischen" Schleife, wenn man so will. Du siehst also jeden Kopierbefehl in der Excel-Tabelle und musst dich nicht darauf verlassen, dass das Skript evtl. die richtigen Ordner trifft. Gerade für so eine uneinheitliche Struktur dürfte das passend sein. Im Prinzip dasselbe wie der Vorschlag von testperson, nur mit einem Zwischenschritt, in dem du jeden der Ordner sehen kannst. Nun sind dir mehrere Ansätze genannt worden. Wenn es an einer konkreten Stelle hakt, müsstest du das also bitte exakter beschreiben. Gruß, Nils bearbeitet 16. Oktober 2015 von NilsK Zitieren Link zu diesem Kommentar
matze-it 10 Geschrieben 16. Oktober 2015 Autor Melden Teilen Geschrieben 16. Oktober 2015 Hallo Nils, ich befürchte ich bekomme da einfach keine Superduperlösung hin und muss wohl doch einen "manuelleren" Weg nehmen. Nochmal zur Ausgangslage: Ursprünglicher Pfad: X:\Share\Kundenname\Auftragsnummer Auftragstitel\Ordnerstruktur Kundnename: Variiert Auftragsnrummer Auftragstitel: Variiert Ordnerstruktur: Immer gleich. Kopieren müsste ich im Prinzip alles was nach den Kundennamen kommt. Es kann jedoch auch vorkommen, dass ein Kunde mehrere Niederlassungen hat, dann heißt der Ordner Kundenname\Niederlassung. Das macht es natürlich noch komplizierter. Ich denke ich schlage deinen Weg ein, ist wohl das sinnvollste. Aufgrund begrenzter Ressourcen und Skriptingkenntnissen bringt das sonst nichts ;-( Danke euch Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 16. Oktober 2015 Melden Teilen Geschrieben 16. Oktober 2015 (bearbeitet) ...oder Dukels Vorschlag einfach noch'n bissle ausarbeiten :) So in der Art werden die Ordner kpl. kopiert, die einen Unterordner "def" enthalten: $SrcRoot = "J:\DIV\TestOrdner\"; $DestRoot = "J:\DIV\CopyTest\"; get-childitem $SrcRoot -recurse | ? { ($_.PsIsContainter) -or ($_.Name -eq 'def') } | foreach-object { $Pfad = $_.FullName.Substring(0,$_.FullName.Length - 3); Copy-Item -Path $Pfad -Destination $DestRoot -Force -Recurse; } ... wenn das Ziel jedoch auch noch dynamische Teile enthalten soll, statt "copy-item" in Excel ausgeben und weiterbearbeiten ;-) bearbeitet 16. Oktober 2015 von Cybquest Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 17. Oktober 2015 Melden Teilen Geschrieben 17. Oktober 2015 und noch ein wenig mehr :-) get-childitem $SrcRoot -recurse -directory | ?{$_.Name -eq 'def'} foreach-object { #-directory geht ab PS3.0 $Pfad= $(Get-Item $_.Fullname).Parent Zitieren Link zu diesem Kommentar
MurdocX 933 Geschrieben 17. Oktober 2015 Melden Teilen Geschrieben 17. Oktober 2015 und noch ein wenig mehr :-) get-childitem $SrcRoot -recurse -directory | ?{$_.Name -eq 'def'} foreach-object { #-directory geht ab PS3.0 $Pfad= $(Get-Item $_.Fullname).Parent Fehlt da nicht noch ein | und ein } ;) get-childitem $SrcRoot -recurse -directory | ?{$_.Name -eq 'def'} | foreach-object {$Pfad= $(Get-Item $_.Fullname).Parent} Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 17. Oktober 2015 Melden Teilen Geschrieben 17. Oktober 2015 hast Recht! Und wer Recht hat, zahlt a Mass :) Zitieren Link zu diesem Kommentar
MurdocX 933 Geschrieben 17. Oktober 2015 Melden Teilen Geschrieben 17. Oktober 2015 Den Brauch kenne ich aber nicht... :suspect: :p Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 17. Oktober 2015 Melden Teilen Geschrieben 17. Oktober 2015 http://lustich.de/community/forum/28762-Bayrisches-Grundgesetz/ -> $10 :) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.