Решение для перебора - планировать выполнение командного файла каждую минуту. Цель состоит в том, что, если программы работают, эта проверка не будет заметна пользователю.
К сожалению, на этих медленных компьютерах, работающих под управлением Windows Embedded Standard 6, список задач и его вариант работают слишком медленно, поэтому нам нужно найти другой механизм для проверки, работают ли программы. К счастью, кажется, что проверка на наличие файла все еще очень быстро.
Механизм, который я предлагаю, заключается в запуске программ с использованием следующего синтаксиса:
prog 2 >> \path\to\lockfile
Параметр «2 >> file» означает, что файл ошибок программы prog перенаправлен в файл блокировки. Этот файл, также называемый stderr в Linux, обычно никогда не записывается в большинство программ. Во время работы программы файл заблокирован и не может быть удален, поскольку он используется. Если программа остановлена, файл может существовать или не существовать, но его можно удалить.
Вот пример сценария, который проверяет, существует ли файл и может ли он быть удален. Я добавил команды echo, полезные при отладке такого скрипта.
@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** )
Чтобы закрыть программу без ее автоматического запуска, как для обслуживания, отключите планирование пакетного файла.
Или, если это слишком хлопотно, добавьте еще один файл под названием «обслуживание» и проверьте его наличие в командном файле, ничего не делая, если он существует. Удалите файл после завершения обслуживания.
Для тестирования можно заблокировать файл с помощью этого пакетного скрипта. Нажмите любую клавишу, чтобы остановить:
pause 2 >> \path\to\lockfile
Рекомендации :