Jump to content

Skript um bestimmte Daten zu kopieren


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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?

 

 

 

 

 

 

Link zu diesem Kommentar

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 von NilsK
Link zu diesem Kommentar

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 von NilsK
Link zu diesem Kommentar

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

Link zu diesem Kommentar

...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 von Cybquest
Link zu diesem Kommentar

 

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}
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...