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-Key: 2261

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

Printed on: April 26, 2024 at 09:04 o'clock

Member: linkit
linkit Nov 04, 2004 at 19:49:13 (UTC)
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
Member: linkit
linkit Nov 04, 2004 at 19:55:22 (UTC)
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
Mitglied: 5274
5274 Nov 04, 2004 at 20:24:42 (UTC)
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
Member: n4426
n4426 Nov 04, 2004 at 20:26:06 (UTC)
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
Member: n4426
n4426 Nov 04, 2004 at 20:48:36 (UTC)
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
Member: SunSailer
SunSailer Jun 13, 2006 at 07:01:36 (UTC)
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
Member: Biber
Biber Jun 13, 2006 at 07:52:42 (UTC)
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
Member: n4426
n4426 Jun 18, 2006 at 16:45:36 (UTC)
Goto Top
Hi,

mittlerweile hab ich das ganze auf Robocopy umgestellt.


Aber trozdem Danke.

mfg

andi