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

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

Printed on: April 23, 2024 at 18:04 o'clock

Member: Iwan
Iwan Oct 07, 2009 at 06:32:16 (UTC)
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
Mitglied: 60730
60730 Oct 07, 2009 at 08:26:00 (UTC)
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ß
Member: miniversum
miniversum Oct 07, 2009 at 11:32:31 (UTC)
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 (
Member: alexander01
alexander01 Oct 07, 2009 at 15:08:07 (UTC)
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
Member: alexander01
alexander01 Oct 07, 2009 at 15:08:34 (UTC)
Goto Top
Danke,

teste ich heute noch.

Alexander
Member: alexander01
alexander01 Oct 08, 2009 at 04:31:48 (UTC)
Goto Top
funktioniert gut!
ich habe das Script noch ein wenig angepaßt, es läuft gut!

danke

Alexander