CMD продолжает работать программы

Это не очень Googleable, и кроме написания prog.exe -params несколько раз в командном файле (который, очевидно, будет работать столько раз, сколько я его написал), я не могу думать, как это сделать несколько раз.

Программа CLI, которую я запускаю, иногда вылетает. Я не хочу перезапускать его вручную каждый раз, когда это происходит.

4 ответа

Решение

Возможно, просто напишите команду в пакете один раз, а затем также добавьте пакетный файл в сам пакет (чтобы он зацикливался)...

Что-то вроде:

Go.bat:

@echo off
Prog.exe -params
Go.bat

Удар Ctrl-C когда вы хотите разорвать цикл партии.

:main
@start /wait prog.exe -params
goto :main

Я на самом деле решил использовать 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, и вы хотите, чтобы он снова запускался в ваше отсутствие.

Другие вопросы по тегам