CMD продолжает работать программы
Это не очень Googleable, и кроме написания prog.exe -params
несколько раз в командном файле (который, очевидно, будет работать столько раз, сколько я его написал), я не могу думать, как это сделать несколько раз.
Программа CLI, которую я запускаю, иногда вылетает. Я не хочу перезапускать его вручную каждый раз, когда это происходит.
4 ответа
Возможно, просто напишите команду в пакете один раз, а затем также добавьте пакетный файл в сам пакет (чтобы он зацикливался)...
Что-то вроде:
Go.bat:
@echo off
Prog.exe -params
Go.bat
Удар Ctrl-C
когда вы хотите разорвать цикл партии.
Я на самом деле решил использовать C в конце концов, так как у меня были проблемы с открытием бесконечных экземпляров командного файла:/
Вот очень простая альтернатива на C для всех, кто интересуется:
int main(){
while (1){
system("C:\\path\\to\\prog.exe -params \"param vars\"");
}
}
По умолчанию, system()
требует, чтобы команда или процесс завершились или вернулись до выполнения следующей строки (если вы не хотите использовать это поведение, добавьте &
в конце) - это именно то, что мы хотим в этом случае.
Если prog.exe
Закрывается, мы смотрим на следующую строку C, которая, так как это бесконечное while
цикл, вновь открывает программу.
Если программа закрывается при сбое, вы можете определить, работает она или нет.
(Вы можете проверить, работает ли он, и запустить его, если это необходимо - вы можете проверить цикл с интервалом)
https://stackoverflow.com/questions/162291/how-to-check-if-a-process-is-running-via-a-batch-script
ЕСЛИ программа не закрывается при сбое: если не считать кодирование пользовательской программы для этого, вы можете использовать макрос-рекордер с распознаванием изображений, чтобы выполнить любое действие, которое вы хотите, когда он распознает указанное вами событие.
Однако это усложняется, если вы хотите активно работать на машине во время выполнения этого процесса. Вы также можете просто создать для него ярлык быстрого запуска и один раз щелкнуть вручную в случае сбоя. Другие варианты просто хороши, если вы AFK, и вы хотите, чтобы он снова запускался в ваше отсутствие.