CMD mantém o programa em execução

2

Isso não é muito googleable, e além de escrever prog.exe -params várias vezes em um arquivo em lote (o que obviamente só funciona quantas vezes eu escrevi) eu não consigo pensar em como fazer isso repetidamente.

O programa CLI que estou executando às vezes falha. Eu não quero reiniciá-lo manualmente toda vez que isso acontece.

    
por OJFord 20.11.2013 / 20:00

4 respostas

3

Talvez apenas escreva o comando no lote uma vez e depois também adicione o arquivo em lote ao lote em si (assim, ele faz um loop) ...

Algo como:

Go.bat :

@echo off
Prog.exe -params
Go.bat

Acerte Ctrl-C quando quiser quebrar o loop de lote.

    
por 20.11.2013 / 20:07
2
:main
@start /wait prog.exe -params
goto :main
    
por 24.11.2013 / 23:22
0

Na verdade, eu decidi usar o C no final, pois tive problemas com o arquivo em lote abrindo instâncias infinitas: /

Aqui está uma alternativa muito simples em C para qualquer pessoa interessada:

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

Por padrão, system() exige que o comando ou processo termine ou retorne antes da próxima linha ser executada (se você não quiser esse comportamento, adicione & no final) - que é exatamente o que queremos em esta instância.

Se prog.exe fechar, olharemos para a próxima linha de C, que, por ser um loop while infinito, reabre o programa.

    
por 20.11.2013 / 22:27
-1

Se o programa fechar na falha, você poderá detectar se está em execução ou não.

(Você pode verificar se está sendo executado e executá-lo, se necessário - você pode repetir o check no intervalo)

link

SE o programa não fechar em falha: Além de codificar um programa personalizado para fazer isso, você pode usar um gravador de macro com reconhecimento de imagem para executar qualquer ação que você queira quando reconhecer um evento que você especificar.

No entanto, isso fica complicado se você quiser trabalhar ativamente na máquina enquanto esse processo está em execução. Você pode também fazer um atalho de inicialização rápida para ele e clicar uma vez manualmente por falha. As outras opções são boas apenas se você for AFK e quiser ter certeza de que ele será executado novamente na sua ausência.

    
por 17.11.2015 / 12:41