n4426
Goto Top

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

Content-ID: 2261

Url: https://administrator.de/contentid/2261

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

linkit
linkit 04.11.2004 um 20:49:13 Uhr
Goto Top
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
linkit
linkit 04.11.2004 um 20:55:22 Uhr
Goto Top
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
5274
5274 04.11.2004 um 21:24:42 Uhr
Goto Top
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
n4426
n4426 04.11.2004 um 21:26:06 Uhr
Goto Top
Hallo,

funktioniert soweit einwandfrei, nur ich habe das Problem, das mein Verzeichnis so aussieht.

"\\SERVER\Group\Office\Word 2004\"

hat einer von euch eine idee, wie ich ihm das beibringen kann.

mfg

n4426
n4426
n4426 04.11.2004 um 21:48:36 Uhr
Goto Top
ich habs jetzt so gelöst.

for /f "eol=; tokens=1,2* delims=," %%i in (Verzeichnisse.txt) do @xcopy %%i %%j /y /E /I

Weis einer von euch wie ich es hinbekomme, das er vor dem kopieren des Verzeichnisses erst das bestehende auf dem Zierlserver löscht (Befehl rmdir).

Ich hatte erst diese Idee. Aber dabei werden erst alle Verzeichnisse gelöscht und dann die neuen draufgespielt.

for /f "eol=; tokens=1,2* delims=," %%i in (Verzeichnisse.txt) do @rmdir %%j /S /Q
for /f "eol=; tokens=1,2* delims=," %%i in (Verzeichnisse.txt) do @xcopy %%i %%j /y /E /I


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

mfg

n4426
SunSailer
SunSailer 13.06.2006 um 09:01:36 Uhr
Goto Top
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

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
Biber
Biber 13.06.2006 um 09:52:42 Uhr
Goto Top
Moin Andi,

pack Deinen Source in eine FOR..IN..DO-Anweisung.
::-------XCopy2CleanedDirs.bat
@echo off
for /f "eol=; tokens=1,2* delims=," %%i in (Verzeichnisse.txt) do (  
     rmdir %%j /S /Q
     xcopy %%i %%j /y /E /I 
)
::{{comment_single_line_remark:0}}

Gruß
Biber
n4426
n4426 18.06.2006 um 18:45:36 Uhr
Goto Top
Hi,

mittlerweile hab ich das ganze auf Robocopy umgestellt.


Aber trozdem Danke.

mfg

andi