Kackfohgel.: Batch-Datei

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

  1. 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

    --
    Man muss nicht alles wissen, man sollte aber wissen, wo das nicht gewusste zu finden ist.
    1. 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

  2. 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

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. 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