Script zum Verzeichniskopieren
Betriebssystem: Windows 2000 Profesional
Hallo Zusammen,
ist es möglich ein script zu schreiben, das einen Ordner mit sammt unterordnern und Dateien kopiert.
Dabei sollen allerdings die Verzeichnisse nicht im script stehten, sondern in einer seperaten Text-Datei
(*.txt). Wenn ich die Verzeichnisse direkt im script angebe, funktioniert das mit dem befehl xcopy.
Inhalt der Textdatei:
Quellverzeichniss Zielverzeichniss
*
"\\SERVER1\Freigabe\Verzeichnis1" "\\SERVER2\Freigabe\Verzeichnis1"
"\\SERVER1\Freigabe\Verzeichnis2" "\\SERVER2\Freigabe\Verzeichnis2"
"\\SERVER1\Freigabe\Verzeichnis3" "\\SERVER2\Freigabe\Verzeichnis3"
"\\SERVER1\Freigabe\Verzeichnis4" "\\SERVER2\Freigabe\Verzeichnis4"
"\\SERVER1\Freigabe\Verzeichnis5" "\\SERVER2\Freigabe\Verzeichnis5"
*
Das script soll nun ein verzeichnis nach dem anderen kopieren.
Gibt es da eine möglichkeit das zu realisieren. Das script sollte dann belibig erweitert werden können
(anzahl der Verzeichnisse).
mfg
n4426
Hallo Zusammen,
ist es möglich ein script zu schreiben, das einen Ordner mit sammt unterordnern und Dateien kopiert.
Dabei sollen allerdings die Verzeichnisse nicht im script stehten, sondern in einer seperaten Text-Datei
(*.txt). Wenn ich die Verzeichnisse direkt im script angebe, funktioniert das mit dem befehl xcopy.
Inhalt der Textdatei:
Quellverzeichniss Zielverzeichniss
*
"\\SERVER1\Freigabe\Verzeichnis1" "\\SERVER2\Freigabe\Verzeichnis1"
"\\SERVER1\Freigabe\Verzeichnis2" "\\SERVER2\Freigabe\Verzeichnis2"
"\\SERVER1\Freigabe\Verzeichnis3" "\\SERVER2\Freigabe\Verzeichnis3"
"\\SERVER1\Freigabe\Verzeichnis4" "\\SERVER2\Freigabe\Verzeichnis4"
"\\SERVER1\Freigabe\Verzeichnis5" "\\SERVER2\Freigabe\Verzeichnis5"
*
Das script soll nun ein verzeichnis nach dem anderen kopieren.
Gibt es da eine möglichkeit das zu realisieren. Das script sollte dann belibig erweitert werden können
(anzahl der Verzeichnisse).
mfg
n4426
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2261
Url: https://administrator.de/contentid/2261
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
8 Kommentare
Neuester Kommentar
Also hierfür sind zwei Schritte nötig:
1. Du legst eine Datei an mit der Liste der Verezichnisse die durch ein Leerzeichen getrennt sind:
Beispiel:
Wert1 Wert2
Wert3 Wert4
Wert5 Wert6
2. Du legst eine Batchdatei an, die folgende Zeile beinhaltet, liste.txt mußt du gegebenefalls anpassen. Auch müssen entsprechende xcopy Paramter gesetzt werden. Ansonsten arbeitet nun dieses Batch Zeile für Zeile ab und kopiert mit den entsprechenden Paramtern.
for /f "eol=; tokens=1,2*" %%i in (liste.txt) do @xcopy %%i %%j
1. Du legst eine Datei an mit der Liste der Verezichnisse die durch ein Leerzeichen getrennt sind:
Beispiel:
Wert1 Wert2
Wert3 Wert4
Wert5 Wert6
2. Du legst eine Batchdatei an, die folgende Zeile beinhaltet, liste.txt mußt du gegebenefalls anpassen. Auch müssen entsprechende xcopy Paramter gesetzt werden. Ansonsten arbeitet nun dieses Batch Zeile für Zeile ab und kopiert mit den entsprechenden Paramtern.
for /f "eol=; tokens=1,2*" %%i in (liste.txt) do @xcopy %%i %%j
Da du nach Erweiterung gefragt hast. Sinnvoll wäre Beispielsweise, wenn du die Verzeichnisse mit unterschiedlichen XcopyParamtern kopieren willst, daß man diese in einer dritten Spalte angibt.... Hier besteht allerdings das Problem, daß das Leerzeichen als Trennung der Sätze nicht mehr funktioniert, da ja xcopy getrennte Paramter benötigt. Ausweichen kannst du mit der FOR Option delims= hier kannst du ein anderes Zeichen dazu bestimmen.
Beispiel:
Verz1 § Verz2 § /e /s
Verz3 § Verz4 §
Verz5 § Verz6 § /h
Die Forzeile müßte dann so aussehen
for /f "eol=; tokens=1,2,3* delims=§" %%i in (liste.txt) do @xcopy %%i %%j %%k
Falls du dich gefragt hast, wofür eol=; steht. Hier kannst du in deine liste.txt durch ; Kommentarzeilen einfügen.
FOR bietet noch viele Möglichkeiten.
Gib einfach mal Start => Ausführen => CMD => okay
und dann for /? ein
Beispiel:
Verz1 § Verz2 § /e /s
Verz3 § Verz4 §
Verz5 § Verz6 § /h
Die Forzeile müßte dann so aussehen
for /f "eol=; tokens=1,2,3* delims=§" %%i in (liste.txt) do @xcopy %%i %%j %%k
Falls du dich gefragt hast, wofür eol=; steht. Hier kannst du in deine liste.txt durch ; Kommentarzeilen einfügen.
FOR bietet noch viele Möglichkeiten.
Gib einfach mal Start => Ausführen => CMD => okay
und dann for /? ein
Das könnte funktionieren, ist aber nicht getestet
~~~~~~~~~~
Option Explicit
Const ForReading = 1
Dim objFSO, f1, strCopyPath
Dim arCopyPath(2) as String
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set f1 = objFSO.OpenTextFile("\Pfad\zur\Datei.txt", ForReading)
Do While f1.AtEndOfStream <> True
strCopyPath = f1.ReadLine
arCopyPath = Split(strCopyPath)
strCopyPath = arCopyPath(0) & ", " & arCopyPath(1)
f1.CopyFolder strCopyPath, True
Loop
f1.Close
strCopyPath = ""
arCopyPath = nothing
~~~~~~~~~~
Wenn du deine Vorgabedatei entsprechen anpasst (Komma und Leerzeichen zwischen den Pfaden) kannst du dir die Stringbastlerei sparen.
Hermann
~~~~~~~~~~
Option Explicit
Const ForReading = 1
Dim objFSO, f1, strCopyPath
Dim arCopyPath(2) as String
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set f1 = objFSO.OpenTextFile("\Pfad\zur\Datei.txt", ForReading)
Do While f1.AtEndOfStream <> True
strCopyPath = f1.ReadLine
arCopyPath = Split(strCopyPath)
strCopyPath = arCopyPath(0) & ", " & arCopyPath(1)
f1.CopyFolder strCopyPath, True
Loop
f1.Close
strCopyPath = ""
arCopyPath = nothing
~~~~~~~~~~
Wenn du deine Vorgabedatei entsprechen anpasst (Komma und Leerzeichen zwischen den Pfaden) kannst du dir die Stringbastlerei sparen.
Hermann
Ich hätte es aber gerne so gehabt
1. Verzeichnis 1 Löschen
2. Verzeichnis 1 Kopieren
3. Verzeichnis 2 Löschen
4. Verzeichnis 2 Kopieren
1. Verzeichnis 1 Löschen
2. Verzeichnis 1 Kopieren
3. Verzeichnis 2 Löschen
4. Verzeichnis 2 Kopieren
Ich würde es so machen!
Script1 Name z.b. Call_GO.cmd
Inhalt:
(kurz in Excel dann kopieren)
Call GO.cmd Quellverzeichnisname1 Zielverzeichnisname1
Call GO.cmd Quellverzeichnisname2 Zielverzeichnisname2
Call GO.cmd Quellverzeichnisname3 Zielverzeichnisname3
Usw.
Script2 Name GO.CMD (beide in ein Verzeichnis legen)
Inhalt:
Set SERVQ=QuellServer1
Set SERVZ=ZielServer2
Set VERZQ=%1%
Set VERZZ=%2%
Rd %SERVZ%%1% /s /q
Xcopy %SERVQ%%1% %SERVZ%%2% /s /y usw?
Jetzt wird immer im wechsel gelöscht und kopiert
Gruß
Hans