Batch-Datei
Kackfohgel.
- sonstiges
Hallo,
ich führe auf einem Windows 2003-Server eine Batchdatei (start.bat) aus, die wiederum mehrere andere Batchdateien (foo.bat, bar.bat) aufrufen soll.
Hier ein Auszug in welcher Form ich die Dateien derzeit aufrufe:
...
SET Ordner=C:\Ordner
SET Unterordner=Unterordner
SET Datei=foo.bat
if exist %Ordner%\%Unterordner%\%Datei% (
echo Job %Datei% um %time% gestartet.
call %Ordner%\%Unterordner%\%Datei%
echo Job %Datei% um %time% beendet.
) else (
echo Die Datei %Ordner%\%Unterordner%\%Datei% existiert nicht.
)
...
Was mich jetzt stört ist, dass zwar die Ausgabe des zweiten echos (... beendet) zeitlich verzögert (offensichtlich nach Ausführung von foo.bat) ausgegeben wird, jedoch als %time% die gleiche Zeit wie für den ersten echo-Aufruf (... gestartet) angegeben wird.
Ich habe das Problem nun dadurch lösen können, dass ich das zweite echo erst nach der else-Klammer einfüge, meine Frage ist also mehr eine Verständnisfrage und weniger, um das Problem zu lösen:
Warum ist %time% beim ersten und zweiten echo identisch, obwohl die Ausgabe tatsächlich einige Minuten später erfolgt?
Freundliche Grüße
Kackfohgel
hi,
bin zwar kein profi in batches aber woher kommt denn dein time?
sieht für mich nur wie ne variable aus, die man neu setzen müsste ;)
Gruß Niklas
Hallo Niklas,
bin zwar kein profi in batches aber woher kommt denn dein time?
sieht für mich nur wie ne variable aus, die man neu setzen müsste ;)
Mit dem time-Befehl wird die aktuelle Uhrzeit ausgegeben. Ist also keine manuell gesetzte Variable.
Gruß
Kackfohgel
Hi,
Was mich jetzt stört ist, dass zwar die Ausgabe des zweiten echos (... beendet) zeitlich verzögert (offensichtlich nach Ausführung von foo.bat) ausgegeben wird, jedoch als %time% die gleiche Zeit wie für den ersten echo-Aufruf (... gestartet) angegeben wird.
Die Variablen werden m.W. soweit möglich sofort ersetzt, nicht erst, wenn die jeweilige Zeile abgearbeitet wird.
SetLocal EnableDelayedExpansion
ändert das - dann wird die Variable erst bei der Verwendung durch ihren Wert ersetzt.
cu,
Andreas
Halllo Andreas,
vielen Dank für deine Antwort.
Die Variablen werden m.W. soweit möglich sofort ersetzt, nicht erst, wenn die jeweilige Zeile abgearbeitet wird.
SetLocal EnableDelayedExpansion
ändert das - dann wird die Variable erst bei der Verwendung durch ihren Wert ersetzt.
Genau das war es. Vielleicht noch der Vollständigkeit halber (für das Archiv): %time% muss zusätzlich durch !time! ersetzt werden.
Gruß
Kackfohgel