Eine Brute-Force-Lösung besteht darin, die Ausführung der Batchdatei jede Minute wiederholt zu planen. Das Ziel ist, dass, wenn die Programme ausgeführt werden, diese Prüfung vom Benutzer nicht wahrgenommen wird.
Leider ist auf diesen langsamen Computern mit Windows Embedded Standard 6 die tasklist und ihre Variante viel zu langsam. Daher müssen wir einen anderen Mechanismus finden, um zu überprüfen, ob die Programme ausgeführt werden. Glücklicherweise scheint die Prüfung auf Vorhandensein einer Datei immer noch sehr schnell zu sein.
Ich schlage vor, die Programme mit dieser Syntax zu starten:
prog 2 >> \path\to\lockfile
Der Parameter "2 >> file" zeigt an, dass die Fehlerdatei von prog in die Sperrdatei umgeleitet wird. Diese Datei, die auch unter Linux als stderr bezeichnet wird, wird normalerweise von den meisten Programmen nicht beschrieben. Während das Programm läuft, ist die Datei gesperrt und kann nicht gelöscht werden, da sie gerade verwendet wird. Wenn das Programm gestoppt ist, kann die Datei vorhanden sein oder nicht, sie kann jedoch gelöscht werden.
Hier ein Beispiel eines Skripts, das überprüft, ob eine Datei vorhanden ist und gelöscht werden kann. Ich habe Echo-Befehle hinzugefügt, die beim Debuggen eines solchen Skripts hilfreich sind.
@echo off if exist \path\to\lockfile ( echo lockfile exists del \path\to\lockfile if exist \path\to\lockfile ( echo lockfile is locked - program is running ) else ( echo lockfile was deleted - program is not running **launch program here** ) ) else ( echo lockfile doesn't exist - program is not running **launch program here** )
Um das Programm zu schließen, ohne dass es wie bei der Wartung automatisch gestartet wird, deaktivieren Sie die Planung der Stapeldatei.
Wenn dies zu viel Mühe macht, fügen Sie eine weitere Datei mit dem Namen "maintenance" hinzu und prüfen Sie, ob sie in der Batchdatei vorhanden ist. Löschen Sie die Datei, wenn die Wartung beendet ist.
Zum Testen kann man die Datei über dieses Batch-Skript sperren. Drücken Sie eine beliebige Taste, um zu stoppen:
pause 2 >> \path\to\lockfile
Verweise :