Zweck:Ausführen eines Befehls an der Eingabeaufforderung oder in einer Batch-Datei, wenn eine bestimmte Bedingung eintritt

 

Format:ON BREAK [command]

ON CLOSE [command]

ON CONDITION [condition command]

ON DBLCLICK [command]

ON ERROR [command]

ON ERRORLEVEL n [command]

ON ERRORMSG [command]

ON LOGOFF [command]

ON LBUTTON [command]

ON MBUTTON [command]

ON RBUTTON [command]

ON RESUME [command]

ON SHUTDOWN [command]

ON SUSPEND [command]

 

command        Befehl, der bei Eintreten des Ereignisses ausgeführt werden soll

/G                Setzen einer globalen Bedingung aus einer Batch-Datei

 

Verwendung:

 

ON setzt eine Überwachung, die für die Dauer der aktuellen Sitzung oder Batchdatei oder bis zur Ersetzung durch einen anderen ON-Befehl desselben Typs in Kraft bleibt. Wann immer eine Unterbrechungs- oder  Fehlerbedingung auftritt, nachdem ON ausgeführt wurde, wird der entsprechende Befehl automatisch ausgeführt. Es können mehrere ON-Befehle gleichzeitig aktiv sein, solange es sich nicht um zwei Befehle desselben Typs handelt. (Zum Beispiel können Sie einen ON BREAK und einen ON CLOSE haben, aber nicht zwei ON LBUTTON.)

 

Wenn das letzte Argument in der Zeile ein einzelnes ( ist , wird es als Beginn einer Befehlsgruppe interpretiert. ON fügt die folgenden Zeilen an (in einer Batch-Datei) oder fordert Sie zu weiteren Eingaben auf (in der Befehlszeile), bis es ein abschließendes )erhält .

 

Globale Bedingungen:

 

Die folgenden ON-Bedingungen können von der Befehlszeile aus ausgeführt werden (eine "globale Bedingung"); alle anderen funktionieren nur in einer Batch-Datei.

 

ON CLOSE

ON LOGOFF

ON SHUTDOWN

ON SUSPEND

ON RESUME

 

Wenn kein Befehl angegeben wird, TCC entfernt den bestehenden Befehl für die angegebene Bedingung. Jedes Mal, wenn eine ON-Anweisung definiert wird, definiert sie einen neuen Befehl, der für dieses Ereignis ausgeführt werden soll, und jeder vorherige Befehl wird verworfen. Wenn eine ON-Bedingung für die aktuelle Stapeldatei definiert ist, setzt sie eine globale ON-Bedingung außer Kraft.

 

Aktivierung von ON BREAK

 

ON BREAK führt denBefehlaus , wenn der Benutzer Strg-C oder Strg-Break drückt .

 

Aktivierungvon ON CLOSE

 

ON CLOSE führt denBefehl aus, wenn die TCC Registerkarte geschlossen wird.

 

Aktivierungvon ON CONDITION

 

ON CONDITION führt den Befehl aus, wenn die Bedingung wahr ist. Die Bedingung kann ein beliebiger Test sein, der in IF gültig ist . Der Test wird nach jeder Ausführung eines Befehls durchgeführt. Wenn Sie eine Schleife (DO oder FOR) ausführen, wird der Test jedes Mal durchgeführt, wenn Sie die Schleife durchlaufen.

 

Aktivierung von ON DBLCLICK

 

ON DBLCLICK führt den Befehl aus , wenn die linke Maustaste doppelt geklickt wird, wenn TCC das aktive Fenster ist. (Beachten Sie, dass, wenn Sie auch einen ON LBUTTON-Befehl haben, dieser beim ersten Klick ausgeführt wird).

 

Aktivierung von ON ERROR und ON ERRORMSG

 

ON ERROR oder ON ERRORMSG führt den Befehl nach einem kritischen Fehler, einem Betriebssystemfehler (z. B. einem Schreibfehler auf der Festplatte) oder einem internen Befehlsfehler (z. B. einem  COPY-Befehl, der keine Dateien kopiert, oder der Verwendung einer ungültigen Befehlsoption)aus .

 

ON ERROR führt den Befehl sofort nach  Auftreten  des Fehlersaus , ohne eine Fehlermeldung anzuzeigen . TCC Fehlermeldung (Windows-Fehler können weiterhin angezeigt werden). ON ERROR setzt auch die interne Variable %_SYSERR.

 

ON ERRORMSG zeigt zuerst die entsprechende Fehlermeldung an und führt dann den Befehl aus .

 

Wenn beides angegeben ist, hat ON ERROR Vorrang, und ON ERRORMSG wird ignoriert.

 

Aktivierung von ON ERRORLEVEL

 

ON ERRORLEVEL n führt den Befehl aus , wenn die interne ERRORLEVEL-Variable gleich der durch n angegebenen Ganzzahl ist . Sie können auch die IF ERRORLEVEL-Tests verwenden, zum Beispiel:

 

ON ERRORLEVEL EQ 37 ...

 

Aktivierung von ON LBUTTON

 

ON LBUTTON führt den Befehl aus , wenn die linke Maustaste angeklickt wird.

 

Aktivierungvon ON LOGOFF

 

ON LOGOFF führt den Befehl aus, wenn sich der Benutzer abmeldet.

 

Aktivierungvon ON MBUTTON

 

ON MBUTTON führt den Befehl aus, wenn die mittlere Maustaste geklickt wird, wenn TCC das aktive Fenster ist.

 

Aktivierungvon ON RBUTTON

 

ON RBUTTON führt den Befehl aus, wenn die rechte Maustaste geklickt wird, wenn TCC das aktive Fenster ist.

 

Aktivierung von ON RESUME

 

ON RESUME führt den Befehl aus, wenn das System nach dem Ruhezustand oder der Ruhephase wieder aufgenommen wird.

 

Aktivierung von ON SHUTDOWN

 

ON SHUTDOWN führt den Befehl aus, wenn das System heruntergefahren wird.

 

Aktivierung von ON SUSPEND

 

ON SUSPEND führt den Befehl aus, wenn das System in den Ruhezustand übergeht oder sich im Ruhezustand befindet. Windows setzt den Ruhezustand nach maximal 2 Sekunden fort.

 

Bereich

 

Jedes Mal, wenn eine ON-Anweisung definiert wird, definiert sie einen neuen Befehl, der für dieses Ereignis ausgeführt wird, und jeder vorherige Befehl wird verworfen.

 

Wenn Sie keinen Befehl angeben, TCC wird der Standard-Handler wiederhergestellt.

 

Eine ON-Anweisung wirkt sich nur auf die aktuelle Batch-Datei aus. Wenn die Stapeldatei, die ON enthält, aus irgendeinem Grund verlassen wird, sei es vorübergehend (z.B. durch einen CALL zu einer anderen Stapeldatei) oder permanent, werden die TCC Standard-Unterbrechungs- und  Fehlerbehandlungsfunktionen wirksam. Eine aufgerufene Batchdatei kann dann ON verwenden, um ihre eigenen Handler zu definieren. Wenn die Kontrolle an die aufrufende Stapeldatei zurückgeht, werden ihre  Break- und  Fehler-Handler, die zum Zeitpunkt des CALLs in Kraft waren , wieder aktiviert.

 

Beschränkungen

 

Der Befehl ON ERROR[MSG] wirdnicht aufgerufen, wenn ein Fehler beim Lesen oder Schreiben einer umgeleiteten Eingabe, Ausgabe oder einer Pipe auftritt.

 

Achtung: Tritt während der  Ausführung  des  in ON BREAK, ON ERROR, ON ERRORLEVEL oder ON ERRORMSG angegebenen Befehlseine Unterbrechung oder ein Fehler auf , wird derBefehl neu gestartet. Dies bedeutet, dass Sie vorsichtig sein müssen, um mögliche Fehler in den von ON aufgerufenen Befehlen entweder zu vermeiden oder zu behandeln, da solche Fehler eine Endlosschleife verursachen können.

 

Beispiele:

 

Der Befehl kann ein beliebiger Befehl sein, der in einer Batch-Datei selbst verwendet werden kann. Häufig handelt es sich um einen GOTO- oder  GOSUB-Befehl. Das folgende Fragment fängt zum Beispiel jeden Versuch des Benutzers ab, die Batch-Datei durch Drücken von Strg-C oder Strg-Break zu beenden . Der Benutzer wird beschimpft, weil er versucht hat, die Batchdatei zu beenden, und dann fortgesetzt:

 

on break gosub gotabreak

do i = 1 to 1000

 echo %i

enddo

quit

:gotabreak

echo Hey! Stop that!!

return

 

Sie können eine Befehlsgruppe als Befehlverwenden , wenn Sie z. B. mehrere Befehle ausführen wollen:

 

on break (echo Oops, got a break! & quit)

 

ON geht davon aus, dass Sie mit der Ausführung der Batch-Datei fortfahren wollen. Nachdem der Befehl ausgeführt wurde, kehrt die Steuerung automatisch zu dem Befehl in der Batchdatei zurück, der unmittelbar auf den Befehl folgt, der durch das Ereignis unterbrochen wurde. Um zu vermeiden, dass die Batchdatei nach dem Ereignis mit dem nächsten Befehl fortgesetzt wird, führen Sie im Befehl eine der folgenden Möglichkeiten aus:

 

Übergeben Sie die Kontrolle mit GOTO,

Beenden Siedie Batchdatei mit QUIT oder CANCEL

Verkettung mit einer anderen Batch-Datei (ohne Verwendung von CALL).

 

Bei der Behandlung einer  Fehlerbedingung mit ON ERROR[MSG] kann es nützlich sein ,interne Variablen, insbesondere %_? und %_SYSERR, zu verwenden , um die Ursache des Fehlers zu ermitteln .

 

Um zu erzwingen TCC einenBreak oder Fehler zu ignorieren , verwenden Sie den  REM-Befehl als Ihren Befehl.

 

Optionen:

 

/GSetzen Sie eine globale Bedingung (eine, die ausgeführt wird, egal ob TCC in einer Batch-Datei oder an der Eingabeaufforderung ausgeführt wird). Dies ist nützlich, wenn Sie globale Bedingungen in einer Batch-Datei setzen wollen. Zum Beispiel:

 

ON /G LOGOFF command