Batch Script aus Batch Script erstellen, Probleme beim Escapen
Hauptproblem: Wie kann ich mit echo den String %ERRORLEVEL%" ausgeben?
Hallo zusammen,
ich habe den Auftrag bekommen ein Script zu schreiben, mit dem wir auf Server A die Routingtabellen sichern und auf Server B wiederherstellen können. Soweit klappt alles ganz gut, ich hole mir die Routen aus der Registry, konvertiere den Dump nach ASCII, schneide die Überschriften weg etc. Dann parse ich die Routingeinträge Zeile für Zeile in einer FOR Schleife.
Jetzt beginnt das Problem: ich erstelle aus diesem Exportscript heraus in dieser Schleife ein neues Script, welches die Routingeinträge mit route add ausführt. Das funktioniert soweit auch. Das ganze sieht dann so aus:
routenimport.cmd ist also das Script, das nachher auf dem zweiten Server aufgerufen werden kann. Eine Zeile in diesem Script sieht dann z.B. so aus:
Jetzt möchte ich aber, dass in diesem Importscript überprüft wird, ob die Route erfolgreich gesetzt wurde. Falls dies nicht der Fall ist, soll eine Meldung ausgegeben werden und ein Eintrag in eine Fehlerliste geschrieben werden. Im Importscript müsste also z.B. folgendes stehen:
Um diese Zeilen aus dem ersten Script heraus zu generieren, benutze ich folgenden Code (:
Das funktioniert NICHT. Ich schaffe es nicht, dass der String "%ERRORLEVEL%" als ganz normaler Text in das zweite Script geschrieben wird, er wird immer interpretiert und durch eine 0 oder 1 ersetzt. Ich habe versucht, mit ^%ERRORLEVEL% zu escapen, was auch nichts brachte. Abgesehen davon habe ich ein sehr ähnliches Problem in der dritten Zeile, da das erste >> ebenfalls nicht als Text in routenimport.cmd geschrieben wird, sondern den Anfang der Zeile in Fehlerliste.txt schreibt. Ist es überhaupt möglich, das Ganze irgendwie zu escapen?
Hat jemand eine Idee, wie ich das hinkriegen kann? Wenn möglich würde ich das gerne so hinkriegen, dass alles aus dem einen Exportscript heraus funktioniert. Vielen Dank schon mal für Eure Tipps und Ideen!
Grüße, Rob
Hallo zusammen,
ich habe den Auftrag bekommen ein Script zu schreiben, mit dem wir auf Server A die Routingtabellen sichern und auf Server B wiederherstellen können. Soweit klappt alles ganz gut, ich hole mir die Routen aus der Registry, konvertiere den Dump nach ASCII, schneide die Überschriften weg etc. Dann parse ich die Routingeinträge Zeile für Zeile in einer FOR Schleife.
Jetzt beginnt das Problem: ich erstelle aus diesem Exportscript heraus in dieser Schleife ein neues Script, welches die Routingeinträge mit route add ausführt. Das funktioniert soweit auch. Das ganze sieht dann so aus:
echo route add %%i mask %%j %%k -p >> routenimport.cmd
routenimport.cmd ist also das Script, das nachher auf dem zweiten Server aufgerufen werden kann. Eine Zeile in diesem Script sieht dann z.B. so aus:
route add 192.168.101.0 mask 255.255.255.0 192.168.168.254 -p
Jetzt möchte ich aber, dass in diesem Importscript überprüft wird, ob die Route erfolgreich gesetzt wurde. Falls dies nicht der Fall ist, soll eine Meldung ausgegeben werden und ein Eintrag in eine Fehlerliste geschrieben werden. Im Importscript müsste also z.B. folgendes stehen:
route add 192.168.101.0 mask 255.255.255.0 192.168.168.254 -p
IF %ERRORLEVEL% NEQ 0 DO (
echo Route zu Host 192.168.101.0 konnte nicht gesetzt werden!
echo Host: 192.168.101.0 Mask: 255.255.255.0 Gateway: 192.168.168.254 >> Fehlerliste.txt
)
Um diese Zeilen aus dem ersten Script heraus zu generieren, benutze ich folgenden Code (:
echo route add %%i mask %%j %%k -p >> routenimport.cmd
echo IF %ERRORLEVEL% NEQ 0 DO ( >> routenimport.cmd
echo echo Route zu Host %%i konnte nicht gesetzt werden! >> routenimport.cmd
echo echo Host: %%i Mask: %%j Gateway: %%k >> Fehlerliste.txt >> routenimport.cmd
)
Das funktioniert NICHT. Ich schaffe es nicht, dass der String "%ERRORLEVEL%" als ganz normaler Text in das zweite Script geschrieben wird, er wird immer interpretiert und durch eine 0 oder 1 ersetzt. Ich habe versucht, mit ^%ERRORLEVEL% zu escapen, was auch nichts brachte. Abgesehen davon habe ich ein sehr ähnliches Problem in der dritten Zeile, da das erste >> ebenfalls nicht als Text in routenimport.cmd geschrieben wird, sondern den Anfang der Zeile in Fehlerliste.txt schreibt. Ist es überhaupt möglich, das Ganze irgendwie zu escapen?
Hat jemand eine Idee, wie ich das hinkriegen kann? Wenn möglich würde ich das gerne so hinkriegen, dass alles aus dem einen Exportscript heraus funktioniert. Vielen Dank schon mal für Eure Tipps und Ideen!
Grüße, Rob
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 161500
Url: https://administrator.de/contentid/161500
Ausgedruckt am: 17.11.2024 um 01:11 Uhr
9 Kommentare
Neuester Kommentar
Die Auflösung des Durcheinanders gibt es Zwei Prozentzeichen vor einer Variable in neue .bat Datei schreiben?. Interessant!
Markus
Markus