bladeXP 10 Geschrieben 14. Oktober 2007 Melden Teilen Geschrieben 14. Oktober 2007 Hallo ich bin momentan dabei ein script zu schreiben mit dem ich daten aus zwei verzeichnissen syncronisieren kann, ich möchte mit zwei input boxen den quell und zielpfad eingeben und dann eine 1:1 syncronisation durchführen. Hat vieleicht einer von euch einen kode den ich daran anpasen kann?Hab nämlich noch nicht so die erfahrung mit vbs und wie ich da mit arrays arbeite. hoffe mir kann da einer weiterhelfen! mfg Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 14. Oktober 2007 Melden Teilen Geschrieben 14. Oktober 2007 Hi, Nimm doch robocopy aus dem Reskit. Damit kannst du synchronisieren mit zig Optionen cu blub Zitieren Link zu diesem Kommentar
bladeXP 10 Geschrieben 15. Oktober 2007 Autor Melden Teilen Geschrieben 15. Oktober 2007 Hy, nein so ein fertiges programm möchte ich nicht benutzen, das kann ja jeder ;-) da giebt es ja auch bei office das groove dass das ja auch kann. Nein eigendlich ist es ja eine übung für mich da ich mich momentan mit VBS auseinandersetze und mir denke dass das halt ein programm währe was man auch so ma verwenden kann. Im prinzib ist es ja wie ein Backup was erst alles was neu ist von verzeichnis 1 nach 2 und dann noch ma von 2 nach 1 kopiert. Wenn man z.b. einen usb stich mitnimmt mit dem arbeitet und will aber daheim auf dem pc nen backup bzw. eine syncronisation so steck ich den stick rein geb den pfaad an und mein script soll alles syncronisieren. auch wenn ich ein dokument was ich vieleicht in der letzten woche schon ma gesichert hab und es heute neu bearbeite dann hab ich ja das datum verändert also soll das script die alte version löschen und nur die neue kopieren. wobei das sachen sind die man vieleicht erst ma zurückstellen sollte, da das wichtigste ja erst ma die reine syncronisation ist. Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 15. Oktober 2007 Melden Teilen Geschrieben 15. Oktober 2007 klar, Übung macht den Meister! :) . Aber warum willst du von uns dann Code haben, das wäre zu deinem Ziel ja glattweg kontraproduktiv? cu blub Zitieren Link zu diesem Kommentar
bladeXP 10 Geschrieben 15. Oktober 2007 Autor Melden Teilen Geschrieben 15. Oktober 2007 Hy ja das stimmt wohl aber ich bin halt in der sache VBScripting eine neuling hab vor einiger zeit ma mit VB und VBA rumprogrammiert aber bin da nie wirklich tief eingestiegen. Hab hier ma meinen code den ich bis jetzt hab, allerdings muss ich mich da erst ma mit dem FileSystem Object auseinandersetzen da ich das noch nicht kenn. Hab jetzt was gelesen das ich erst eine bibliothek freischalten muss weil vb fso gar nicht kennt. Option Explicit 'Quell und Ziel Pfad eingabe Dim varQuellPfad Dim varZielPfad varQuellPfad = InputBox("Bitte QuellPfad eingeben") varZielPfad = InputBox("Bitte Zielpfad eingeben") & "\" Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") FSO.copyfile "varQuellPfad","varZielPfad", False eigendlich sollte nach meiner auffassung hier einfach alles von verzeichnis a nach b kopiert werden, mit unterordnern usw Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 15. Oktober 2007 Melden Teilen Geschrieben 15. Oktober 2007 Zum Filesystemobject kann google viiiel weiterhelfen ;) Oder MS MSDN: FileSystemObject Methods Ein Fehler ist in deinem Code: Die Gänsefüssle bei varQuellpfad und varZielpfad gehören nicht hin, sonst sinds nicht die Variablen, die genommen werden, sondern der Text "varQuellpfad"...! Zitieren Link zu diesem Kommentar
bladeXP 10 Geschrieben 15. Oktober 2007 Autor Melden Teilen Geschrieben 15. Oktober 2007 aha cool danke. hab jetzt ma move folder verwendet und schon ma ein kleiner erfolgserlebnis. auch wenn jetzt der ganze start ordner in den ziel ordner reingesteckt wird und nicht nur dessen inhalt:) . Option Explicit 'Quell und Ziel Pfad eingabe Dim varQuellpfad Dim varZielpfad varQuellpfad = InputBox("Bitte Quellpfad eingeben") varZielpfad = InputBox("Bitte Zielpfad eingeben") & "\" Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") FSO.MoveFolder varQuellpfad, varZielpfad 'False Zitieren Link zu diesem Kommentar
bladeXP 10 Geschrieben 16. Oktober 2007 Autor Melden Teilen Geschrieben 16. Oktober 2007 hy bin mittlerweile etwas weiter gekommen. Option Explicit 'Quell und Ziel Pfad eingabe Dim varQuellpfad Dim varZielpfad varQuellpfad = InputBox("Bitte Quellpfad eingeben") & "\" varZielpfad = InputBox("Bitte Zielpfad eingeben") & "\" ' Aufruf der Routine ' Konstanten definieren Dim VerzeichnisBezeichner VerzeichnisBezeichner = varQuellpfad ListeVerzeichnisseRek VerzeichnisBezeichner Sub ListeVerzeichnisseRek(Verzeichnisname) ' Deklaration der Variablen Dim FSO, Verzeichnis, UnterVerzeichnis 'Objekt erzeugen Set FSO = CreateObject("Scripting.FileSystemObject") ' Wenn das Verzeichnis existiert If FSO.FolderExists(Verzeichnisname) Then ' Wenn das Verzeichnis existiert Set Verzeichnis = FSO.GetFolder(Verzeichnisname) 'Alle Unterverzeichnisse auflisten For Each UnterVerzeichnis In Verzeichnis.subfolders ' WScript.echo Verzeichnisname & UnterVerzeichnis.Name ' Erneuter Aufruf mit dem Unterverzeichnis ListeVerzeichnisseRek UnterVerzeichnis FSO.MoveFolder UnterVerzeichnis, varZielpfad Next End If End Sub allerdings kopiert er nur die unterverzeichnisse mit den datei inhalten von a nach b. wenn ich aber in unterverz. noch weitere unterverz. hab kommt die meldung datei existiert bereits.hmm und das will ich ja nicht. es sollen ja egal wie viel instanzen die unterverzeichnisse haben erst ma alles kopiert werden egal ob unterordner die selbe bezeichnung haben wie die darüberliegenden. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 16. Oktober 2007 Melden Teilen Geschrieben 16. Oktober 2007 Dein Script kopiert ja die Unterverzeichnisse "platt" in ein Zielverzeichnis. Wenns dann gleiche Namen gibt, geht das so natürlich nicht. Wenn du die Verzeichnisse aus einem Baum in einer Zielebene abspeichern willst, häng doch einfach die Baum-Ebene mit an den Ordernamen mit dran. Ansonsten muss das Zielverzeichnis bei nden Rekursionen auch entspr. angepasst werden! Zitieren Link zu diesem Kommentar
bladeXP 10 Geschrieben 16. Oktober 2007 Autor Melden Teilen Geschrieben 16. Oktober 2007 hmm ja wenn ich aber die baumebene mitdrann hänge und ich in 2 verzeichnissen jeweils einen ordner mit der selben bezeichnung hab würde ich doch wieder einen fehler bekommen da ja dann beide verzeichnisse in der selben ebene liegen und die selbe bezechnung haben. wie müsste ich denn vorgehen wenn ich die ordner wieder rekursiv speichern wollte? also das alle unterverzeichnisse auch in den verzeichnissen wieder drinn sind? Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 16. Oktober 2007 Melden Teilen Geschrieben 16. Oktober 2007 Eigentlich so, wie du schon mal angefangen hast. Also einfach ohne Rekursion. Nur statt MoveFolder CopyFolder. Damit nicht der Quellordner kpl. in den Zielordner reinkopiert wird, einfach ein "\*" an den Quellpfad anhängen. Die Dateien auf der ersten Ebene können dann mit CopyFile hinterherkopiert werden. So in der Art: varQuellpfad = InputBox("Bitte Quellpfad eingeben") & "\*" varZielpfad = InputBox("Bitte Zielpfad eingeben") & "\" Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") if not FSO.FolderExists(varZielpfad) then FSO.CreateFolder(varZielpfad) FSO.CopyFolder varQuellpfad, varZielpfad FSO.CopyFile varQuellpfad, varZielpfad Zitieren Link zu diesem Kommentar
bladeXP 10 Geschrieben 18. Oktober 2007 Autor Melden Teilen Geschrieben 18. Oktober 2007 hallo hab es hinbekommen das zumindest die verzeichnisse rekursiv in eine richtung gesichert werden nur die dateien die werden noch nicht verschoben weis noch nicht so ganz wie ich da den code zusammenbau! aber jetzt möchte ich es erst einmal hinbekommen das nur die ordner syncronisiert werden dazu habe ich jetzt folgenden code, geschrieben. es funktionier wie gesagt in eine richtung aber in die andere kommt die fehlermeldung pfad kann nicht gefunden werden dabei hab ich doch genau den code verwendet den ich auch in die eine richtung benutzt habe aber in die andere will eer nicht. kann aber nicht die ursache finden:confused: Option Explicit 'Quell und Ziel Pfad eingabe Dim varQuellpfad Dim varZielpfad varQuellpfad = InputBox("Bitte Quellpfad eingeben") & "\" varZielpfad = InputBox("Bitte Zielpfad eingeben") & "\" ' Aufruf der Routine ' Konstanten definieren Sub PruefeKonventionen ' prüft, ob die Ordnernamen mit einem "\" enden ' falls ja, wird dieses Zeichen abgeschnitten: If Right(originale,1) = "\" Then originale = Left(originale, Len(originale)-1) End If If Right(ziel,1) = "\" Then ziel = Left(ziel, Len(ziel)-1) End If End Sub Dim VerzeichnisBezeichner VerzeichnisBezeichner = varQuellpfad ListeVerzeichnisseRek VerzeichnisBezeichner Sub ListeVerzeichnisseRek(Verzeichnisname) ' Deklaration der Variablen Dim FSO, Verzeichnis, UnterVerzeichnis 'Objekt erzeugen Set FSO = CreateObject("Scripting.FileSystemObject") ' Wenn das Verzeichnis existiert If FSO.FolderExists(Verzeichnisname) Then ' Wenn das Verzeichnis existiert Set Verzeichnis = FSO.GetFolder(Verzeichnisname) 'Alle Unterverzeichnisse auflisten For Each UnterVerzeichnis In Verzeichnis.subfolders ' prüft, ob die Ordnernamen mit einem "\" enden ' falls ja, wird dieses Zeichen abgeschnitten: ' WScript.echo Verzeichnisname & UnterVerzeichnis.Name ' Erneuter Aufruf mit dem Unterverzeichnis 'ListeVerzeichnisseRek UnterVerzeichnis FSO.CopyFolder UnterVerzeichnis, varZielpfad Next End If End Sub Sub PruefeKonventionen2 ' prüft, ob die Ordnernamen mit einem "\" enden ' falls ja, wird dieses Zeichen abgeschnitten: If Right(originale,1) = "\" Then originale = Left(originale, Len(originale)-1) End If If Right(ziel,1) = "\" Then ziel = Left(ziel, Len(ziel)-1) End If End Sub Dim VerzeichnisRuecksicherung VerzeichnisRuecksicherung = varZielpfad Ruecksicherung VerzeichnisRuecksicherung Sub Ruecksicherung(Verzeichnisname2) ' Deklaration der Variablen Dim FSO2, Verzeichnis2, UnterVerzeichnis2 'Objekt erzeugen Set FSO2 = CreateObject("Scripting.FileSystemObject") ' Wenn das Verzeichnis existiert If FSO2.FolderExists(Verzeichnisname2) Then ' Wenn das Verzeichnis existiert Set Verzeichnis2 = FSO2.GetFolder(Verzeichnisname2) 'Alle Unterverzeichnisse auflisten For Each UnterVerzeichnis2 In Verzeichnis2.subfolders ' prüft, ob die Ordnernamen mit einem "\" enden ' falls ja, wird dieses Zeichen abgeschnitten: ' WScript.echo Verzeichnisname & UnterVerzeichnis.Name ' Erneuter Aufruf mit dem Unterverzeichnis 'ListeVerzeichnisseRek UnterVerzeichnis FSO2.CopyFolder varQuellpfad, UnterVerzeichnis2 Next End If End Sub Zitieren Link zu diesem Kommentar
bladeXP 10 Geschrieben 18. Oktober 2007 Autor Melden Teilen Geschrieben 18. Oktober 2007 oooch Cybgust warum mach ich das so kompliziert wenns auch so einfach geht ? lol naja aber egal jetzt will ichs auch mit meinem code ma hinbekommen ;) aber trotzdem schonma vielen dank Zitieren Link zu diesem Kommentar
bladeXP 10 Geschrieben 18. Oktober 2007 Autor Melden Teilen Geschrieben 18. Oktober 2007 soo jetzt hab ich es hinbekommen das erst ma nur die ordner rekursiv erst auf die eine seite kopiert werden und dann noch ma auf die andere seite,. nun muss ich nur noch ma die direkten dateien wieder von dem einem hauptverzeichnis in das andere kopieren. also die dateien die jeweils direkt im ordner liegen, die werden nämlich noch nicht rüber kopiert. habe es mit dem script versucht: varQuellpfad = InputBox("Bitte Quellpfad eingeben") & "\*" varZielpfad = InputBox("Bitte Zielpfad eingeben") & "\" Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") if not FSO.FileExists(varZielpfad) then FSO.CopyFile varQuellpfad, varZielpfad das will auch noch nicht muss zugeben das ich mich da jetzt auch nicht tiefer mit befasst hab, wenn einer einen tipp hat bitte posten. wollte einfach wieder eine syncronisation vornemen also auch erst von quell nach ziel und wieder zurück. 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.