Como criar um script em lote do Windows para fazer isso?

0

Estou executando o Windows-7. Eu quero criar um arquivo de lote do Windows que funciona assim:

  1. Execute um exe com argumentos especificados. Aguarde a execução completa deste exe. (Este EXE é essencialmente gravar um fluxo de vídeo online e é suposto gravá-lo por 1 hora e 5 minutos)
  2. Se, no entanto, exe exits (parar de gravar e sair da execução) antes do período de tempo estipulado (1 hora e 5 minutos), execute o mesmo exe com argumento diferente para a duração restante. Mate a execução do EXE quando o período de tempo total (incluindo o primeiro tun do EXE no Passo 1) atingir 1 hora e 5 minutos.
  3. Continue a executar o exe com argumentos diferentes até que o tempo acumulado seja de 1 hora e 5 minutos.
  4. Elimine a execução do EXE e saia da execução do arquivo em lote quando o arquivo em lote tiver sido executado por 1 hora e 5 minutos.

Nota: O exe recebe dois argumentos: o endereço do fluxo de entrada e o nome do arquivo de saída. O único argumento que muda em cada execução do EXE acima é o nome do arquivo que muda de "FileName" na primeira execução para "FileName2" quando a primeira execução sai antes de 1 hora e 5 minutos. E o nome do arquivo deve ser incrementado para Filename2, Filename3 e assim por diante até que o tempo de execução acumulado desse arquivo em lote atinja 1 hora e 5 minutos. Para um exemplo real, veja este comando:

"C:\Windows\System32\rtmpdump.exe" -i rtmpt://154.500.69.6/live -o "C:\Users\user\Desktop\Filename.extension"

O comando mencionado acima é o que deve ser executado pela primeira vez. Em execuções subseqüentes (que são necessárias apenas se essa primeira execução sair antes da meta de 1 hora e 5 minutos), apenas o nome do arquivo precisa ser alterado para Filename2.extension, como mostrado no comando abaixo:

"C:\Windows\System32\rtmpdump.exe" -i rtmpt://154.500.69.6/live -o "C:\Users\user\Desktop\Filename2.extension"

E esta sequência precisa continuar até que a execução cumulativa desse arquivo em lote atinja 1 hora e 5 minutos.

    
por ComputerUser 20.07.2016 / 07:44

1 resposta

1

O lote não pode fazer isso diretamente. Tudo que o Batch normalmente faz é executar programas externos. Existe alguma capacidade de pular / goto / loop, e variáveis podem ser usadas, embora o uso de variáveis seja um pouco doloroso.

Então, uma vez que a maioria do que as pessoas fazem com o Batch é executar programas externos, seu objetivo não será aprender muito bem o Batch. Seu objetivo será encontrar um programa que faça as coisas que você deseja fazer.

A execução de um programa com parâmetros de linha de comando é factível. TASKLIST pode ajudar a determinar se um programa está sendo executado ou WMIC. No entanto, verificar o tempo pode não ser a coisa mais simples.

Outra opção é usar o Windows Scripting Host (WSH), que permite executar o JScript (essencialmente JavaScript) ou o VBScript. Isso é feito com o programa CScript (ou o programa WScript). Essa abordagem provavelmente permitirá que você veja o tempo, embora os detalhes sejam mais adequadamente respondidos pelo StackOverflow (programação) em vez do SuperUser (computação geral).

(Como observado em outros lugares, o PowerShell também pode ser uma alternativa viável que pode ser mais fácil que o Batch).

Em vez de verificar se a gravação durou 65 minutos, talvez você queira verificar o ERRORLEVEL (também conhecido como Código de erro, Código de saída ou Código de retorno) do programa. Muitos programas usam isso como uma maneira de comunicar facilmente se um processo foi bem-sucedido ou malsucedido. A maneira precisa de fazer isso dependerá de qual linguagem de programação você usa.

    
por 20.07.2016 / 10:01