2

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

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

4 ответа4

3

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

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

Go.bat:

@echo off
Prog.exe -params
Go.bat

Нажмите Ctrl-C когда вы хотите разорвать пакетный цикл.

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

Я на самом деле решил использовать C в конце концов, так как у меня были проблемы с открытием бесконечных экземпляров командного файла:/

Вот очень простая альтернатива на C для всех, кто интересуется:

int main(){
    while (1){
        system("C:\\path\\to\\prog.exe -params \"param vars\"");
    }
}

По умолчанию system() требует, чтобы команда или процесс завершились или вернулись до выполнения следующей строки (если вам не нужно это поведение, добавьте & в конце) - это именно то, что мы хотим в этом случае.

Если prog.exe закрывается, мы посмотрим на следующую строку С, так как это бесконечное while цикла, вновь открывает программу.

-1

Если программа закрывается при сбое, вы можете определить, работает она или нет.

(Вы можете проверить, работает ли он, и запустить его при необходимости - вы можете проверить цикл с интервалом)

https://stackoverflow.com/questions/162291/how-to-check-if-a-process-is-running-via-a-batch-script

ЕСЛИ программа не закрывается при сбое: если не считать кодирование пользовательской программы, чтобы сделать это, вы можете использовать макрос-рекордер с распознаванием изображений, чтобы выполнить любое действие, которое вы хотите, когда он распознает указанное вами событие.

Однако это усложняется, если вы хотите активно работать на машине во время выполнения этого процесса. Вы также можете просто создать для него ярлык быстрого запуска и один раз щелкнуть вручную в случае сбоя. Другие варианты просто хороши, если вы AFK, и вы хотите убедиться, что он запускается повторно в ваше отсутствие.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .