Frage von MoeS1973, 32

Batch Skript zum Ordner verschieben?

Hallo,

ich habe per Skript Backups einiger PCs, die aus Sicherheitsgründen nicht am Netz(werk) hängen auf einen USB-Stick gemacht. Nun möchte die die Backups von dem Stick in entsprechende Ordner auf einem NAS speichern. Da das regelmäßig vorkommt, und ich keine Lust habe alle Ordner per Hand zu machen (dauert bei der Anahl der Ordner lange und ist fehleranfällig) hätte ich dazu gerne ein Skript.

Auf dem Stick befinden sich z. B. folgende Ordner:

test1_DB_TTMMYYY
test1_Arc_TTMMYYY
test1_Seq_TTMMYYY
test2_DB_TTMMYYY
test2_Mol_TTMMYYY
test2_farg_TTMMYYY

Ich scheitere nun daran ein Skript zu schreiben, das mir die Ordner von dem Stick auf das NAS in die Ordner :

Backup_test1
Backup_test2
...

zunächst kopiert, und bei Erfolg des Kopiervorgangs von Stick löscht. Hat dazu wer eine Idee?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Maisbaer78, 21

du könntest die Errorlevelausgabe auswerten, die hat ja je nachdem ob Erfolg oder nicht eine bestimmte Größe.

Das wäre es wohl ungefähr so.

xcopy ...\test1_DB-TTMMYYYY\*.* ...Backup_test1\
if errorlevel 1 goto END 
del ...\test1_DB-TTMMYYYY\*.*

:END
Exit



oder sowas in der Art.

(Achtung, die Abfrage bedeutet wörtlich "ist der Rückgabewert nicht GRÖSSER oder GLEICH 1" (0 wäre eine erfolgreiche Aktion, alles darüber sind Fehler, glaub ich)


So würde ich die Sache angehen. Ich möchts aber nicht selbst machen, da ich nicht dafür verantwortlich sein will, dass dir irgendwas verloren geht ^^

du solltest das also vorher an Testordnern versuchen.



Kommentar von Maisbaer78 ,

oder aber, du erledigst die Kopierarbeit, und vergleichst anschliessend in einer doppelten FOR Schleife , ob jede einzelne Datei im Zielordner vorhanden ist. Ist dem so, kann Sie in der gleichen Schleife gelöscht werden.

Das wäre mir die liebere weil sicherere Alternative.

Kommentar von MoeS1973 ,

Danke für die Antwort. Bleibt nur noch die Frage, wie ich dem Skript beibringe die Ordner test1_DB...,  test1_Seq...  und test1_Arc...
nach Backup_test1 bzw test2_DB...,  test2_Mol...  und test2_Farg... nach Backup_test2 zu kopieren. Die Ordner hier stehen beispielhaft für relativ viele Ordner, so dass das per Hand recht aufwändig und fehleranfällig ist.

Kommentar von Maisbaer78 ,

achso du meinst, das Script soll selbstständig erkennen welche Ordner vorhanden sind, nach deren Namen dann neue Ordner auf dem NAS anzulegen und den Inhalt jedes erkannten Ordners in den entsprechenden Ordner auf dem Nas zu kopieren?

Das wäre ebenfalls mit FOR möglich

FOR /F "Tokens=1,* Delims=_" %%i in ('Dir /b *.') do (md \\hierdasNAS\Backup_%%i ) & (copy ...\%%i_%%j  \\hierdasNAS\Backup_%%i )


Aber nagel mich nicht drauf fest, bei FOR Schleifen bin ich immer etwas unsicher ^^

Damit sollten eigentlich die Ordnernamen im Quellpfad auf die Bezeichnung vor dem ersten _ gekürzt und daraus im NAS -Pfad ein entsprechend benanntes Verzeichnis angelegt werden. Anschliessend sollten die gesamten Ordner (der Name setzt sich aus %%i_%%j zusammen (den Unterstrich als erstes Trennzeichen muss ich wieder reinbasteln sonst fehlt er)  in Ihr zugewiesenes Verzeichnis kopiert werden.

Die automatische Überprüfung könnte theoretisch auch noch in der selben Schleife stehen, aber ich bin da wie gesagt nicht so firm.

Da das von dir Beispielnamen sind musst du schauen, ob das Trennzeichen tatsächlich ein _ ist oder etwas anderes, das müsstest du dann einfügen.

Achso und wenn du die Zeile testweise in der Commandozeile ausführen willst, dann nur jeweils ein % vor den Variablen. Doppelte sind nötig, wenn das ganze in einer Batch steht.


Antwort
von asmpeter, 5

Rsync für Windows suchen und installieren. Es kopiert ganze Verzeichnisbäume und kontrolliert den Erfolg der Operation. Rsync stammt aus der Unix-Welt und wurde nach Windows portiert. Einfach die Suchmaschine des Vertrauens bemühen.

Kommentar von MoeS1973 ,

Leider kann ich auf dem PC keine Software installieren (gehört der Firma)

Keine passende Antwort gefunden?

Fragen Sie die Community