| 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:
ON /G LOGOFF command