alexander01
Goto Top

batch-File als Kopier-Routine

Hallo, wer kann mir eine Hilfestellung geben?

ich bin am Erstellen eines kleinen batch-Files. Dieses soll mir automatisch nachts bestimmte Verzeichnisse von a nach b sichern.
mein bisheriges script macht das alles, ich habe jedoch für jedes verzeichnis mehrere Zeilen text, dadurch wird das script sehr lang und unüübersichtlich. Da die befehle bei allen Verzeichnissen gleich sind (erst wird der Inhalt des Zielverzeichnisses gelöscht, dann mit xcopy neu beschrieben, logs erstellt und entsprechend errorlevel weiter gesprungen) dachte ich daran, die verzeichnisse mit set vz_1=c:\test1 u.s.w. zu deklarieren und dann in einer for-schleife alle verzeichnisse abzuarbeiten:

@echo off & setlocal enabledelayedexpansion

set vz_1=c:\test1
set vz_2=c:\test2
set vz_3=c:\test3
set vz_4=c:\test4

for /L %%i in (1 1 4) do (
set "vz=vz_%%i"
echo %!vz!% (Testzwecke) --------> listet am Monitor alle Verzeichnisse richtig auf, jedoch nicht den Inhalt (schreibt also "vz_1" und nicht "c:\test1")
xcopy !vz!\* c:\Backup /D /E /Y /I -------> wie macht man das?
)

der Echo-Befehl zeicht die vz-Variable jetzt richtig an, aber wie stelle ich den Bezug zum zugewiesenen Verzeichnis her?

Danke

Alexander

Content-ID: 126597

Url: https://administrator.de/forum/batch-file-als-kopier-routine-126597.html

Ausgedruckt am: 23.12.2024 um 05:12 Uhr

Iwan
Iwan 07.10.2009 um 08:32:16 Uhr
Goto Top
guten morgen,

kannst du dir bitte zwecks besser Lesbarkeit die Formatierungshilfe mal angucken
da gibt es extra welche, um Code besser zu posten
60730
60730 07.10.2009 um 10:26:00 Uhr
Goto Top
Servus,

kennst du den Parameter %1 bzw %2?

echo %1 %2
pause

Wenn das miniscript mit scriptname parameter1 parameter2 aufgerufen wird - kommt eben jenes (parameter1 parameter2) per echo zurück.

Und genau damit kannst du deine immer wiederkehrenden Zeilen parametergesteuert "anders" ausführen.

Gruß
miniversum
miniversum 07.10.2009 um 13:32:31 Uhr
Goto Top
Mal ungetestet:
@echo off & setlocal
FOR /F "tokens=1* delims=:" %%e in ('findstr /B /L /C:"REM DATA Verzeichnis:" "%~0"') do (  
echo Verarbeite: "%%f"  
xcopy "%%f"\* c:\Backup /D /E /Y /I  
)

REM DATA Verzeichnis:c:\test1
REM DATA Verzeichnis:c:\test2
REM DATA Verzeichnis:c:\test3
REM DATA Verzeichnis:c:\test4

Es können beliebig viele Zeile mit "REM DATA Verzeichnis:" angelegt werden. Die Zeile:
FOR /F "tokens=1* delims=:" %%e in ('findstr /B /L /C:"REM DATA Verzeichnis:" "%~0"') do (
lies dann auch der Batch selbst diese Zeile nahc einander aus, und nutzt sie als Variable %%f.
Willst du lieber eine extra Datei dafür haben kannst du die Verzeishcnisse auch direkt untereinander in eine Datei schreiben. Dann mußt du die Zeile 2 so abändern:
FOR /F "tokens=1 delims=" %%f in ('type "Datei.txt"') do (
alexander01
alexander01 07.10.2009 um 17:08:07 Uhr
Goto Top
danke Timo,

ja, die Parameterübergabe kenne ich.
Es wäre in der Tat eine Möglichkeit!
Es sind nun viele (ca. 10) Verzeichnisse und die Sache soll natürlich vollautomatisch laufen, insofern wäre mir ein in sich geschlossenes Script lieber...

danke erstmal, ich überlege noch


Alexander
alexander01
alexander01 07.10.2009 um 17:08:34 Uhr
Goto Top
Danke,

teste ich heute noch.

Alexander
alexander01
alexander01 08.10.2009 um 06:31:48 Uhr
Goto Top
funktioniert gut!
ich habe das Script noch ein wenig angepaßt, es läuft gut!

danke

Alexander