meto
Goto Top

Dateiname aus den Parametern in eine Forschleife übergeben

Backupscript (Batch) für W2K aufgrund einer eigenen Jobdatei erstellen

Hallo!
Bin jetzt echt am Verzeifeln. Ich bin gerade dabei mir ein Backupscript zu schreiben. Die zu sichernen Verzeichnisse, das Ziel der Sicherung und eine Bezeichnung schreibe ich mir in eine Textdatei.
Diese Textdatei will ich jetzt mit einer For Schleife auslesen. Das Klapp auch. Da ich aber gern flexiebel bin möchte ich die auszulesene Datei (sichern.txt) als Parameter an die Batchdatei übergeben und in die Forschleife einfügen. Die Zeile sieht dann wie folgt aus:

for /F "eol=# skip=1 tokens=1,2,3 delims=; " %%a in (%1%) do echo %%a %%b %%c

Zu Testzwecken hab ich jetzt erstmal den echo-Befehl in der For-Schleife benutz, um zu sehen was gelesen wird. Aber es funktioniert nicht. Gebe ich für %1% sichern.txt ein, gehts. Die Ausgabe von

echo %1%

stimmt mit der Datei überein, so dass es irgendwie nur am Syntax liegen kann. Fehlermeldungen gibts im übrigen auch nicht, warum mir auch der Anhaltspunt fehlt.

Währe schön wenn jemand eine Lösung wüste.

Gruß
Meto

Content-ID: 7327

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

Ausgedruckt am: 22.11.2024 um 09:11 Uhr

leknilk0815
leknilk0815 24.02.2005 um 12:04:56 Uhr
Goto Top
Hi,
möglicherweise liegt der "Fehler" daran, daß eine Umgebungsvariable immer nur in der aktuellen DOS Box vorhanden ist. Ich habe in solchen Fällen dann eine globale Variable gesetzt und diese hinterher per Script wieder gelöscht.
Gruß - Toni
meto
meto 24.02.2005 um 14:01:28 Uhr
Goto Top
Jou, das klappt! Das hatte ich vorher zwar auch schon versucht hab da aber nen Klops eingebaut (blöde Leertaste) . Manschmal ist es eben besser mal einen Moment den Bildschirm zu verlassen.

Eine andere Frage. Die Ausgabe der Befehle leite ich in eine Logdatei um. Leider scheint das nicht mit Fehlermeldugnen zu funktionieren. Die sehe ich nur auf dem Bildschirm nicht in der Datei. Wie bekomme ich jetzt z. B. eine Fehlermeldung die xcopy ausgibt in meine Log-Datei?

Gruß
Meto
leknilk0815
leknilk0815 24.02.2005 um 14:39:45 Uhr
Goto Top
ad hoc kann ich Dir das leider nicht sagen, aber schau mal hier nach, vielleicht hilfts!
http://www.admini.de/batch-infos.htm
Gruß - Toni
meto
meto 24.02.2005 um 14:49:15 Uhr
Goto Top
Danke. Sieht sehr interesant aus. Wenn ich was finde werd ichs posten.
leknilk0815
leknilk0815 24.02.2005 um 15:08:09 Uhr
Goto Top
kannst ja derweilen mal so testen:
W:\>copy test1.txt test2.txt w: > tst.txt
meto
meto 24.02.2005 um 15:13:09 Uhr
Goto Top
So versuch ich es ja. Beim ersten Befehl setze ich >log.txt (Inhalt wird in eine neue log.txt geschrieben) hinten an. Bei den nachfolgenden >>log.txt (Inhalt wird an die log.txt angefügt). Dann verschiebe ich die Logdatei in den Entsprechenden Backupordner.
Wie gesagt es wird auch alles mitprotokolliert, nur ebend Fehlermeldugen nicht.

Gruß
Meto
leknilk0815
leknilk0815 24.02.2005 um 15:25:04 Uhr
Goto Top
der Befehl schreibt aber doch in tst.txt: "Datei nicht vorhanden", und das ist doch eine Fehlermeldung???
meto
meto 24.02.2005 um 16:01:39 Uhr
Goto Top
Stimmt, mit copy gehts. Ich benutze aber xcopy und damit gehts komischer Weise nicht. Da versteh mal einer face-confused-alt.

Dumm ist nur, dass ich einige Optionen von xcopy schon brauche.
meto
meto 24.02.2005 um 16:13:09 Uhr
Goto Top
Mensch, ich habs face-smile). Dein Link war wirklich Gold wert. Das Betriebssystem unterscheidet zwischen Fehler- und Standartausgabe. Die Standartausgabe wird durch

1>log.txt oder durch >log.txt (bzw. 1>> o. >>)

in die Datei umgeleitet. Die Fehlerausgabe leitet man mit

2>log.txt (bzw. 2>>log.txt) um.

Der Befehl würde also so aussehen

xcopy Datei.txt W:\ >standart.txt 2>fehler.txt

Wobei auch der Fehler in die Logdatei geschrieben werden kann, indem man diese dort als Ziel angiebt. Dann aber unbeding 2>> verwenden, da die Datei sonst überschrieben wird.

Hier noch mal der Genaue Link, weils auch noch etwas einfacher geht und hier wirklich gut beschriben ist:
http://www.admini.de/batch-infos.htm#Befehlssymbole

Also nochmal Danke.