eu tenho esse comando
for ($i=0; $i -gt -1; $i++) {
$path = "..."
ffmpeg -f dshow -i audio="Microphone (USB Microphone)" -y -t 00:10:00 -b:a 128k $path
}
Preciso obter o estado atual da última linha do fluxo de saída do comando e, se a linha permanecer inalterada (obstruída/congelada/travada) por mais de 5 segundos, registre "aviso: o programa está congelando. tentando reiniciar...", em seguida, pare o processo e reinicie o comando.
Mas eu me pergunto, isso é mesmo possível? Obrigado pela ajuda.
Utilizar funções e técnicas avançadas do PowerShell, além de anexar
2> $Log
aoffmpeg
comando , redireciona com eficiência sua saída de erro padrão para um arquivo de log especificado.Esta abordagem define as variáveis
$path
,$log
e$micName
inicialmente. Em seguida, quatro funções simples são definidas e posteriormente chamadas por lógica adicional, utilizando as variáveis predefinidas desde o início.A
run-ffmpeg
função incorpora três parâmetros definidos explicitamente. Considerando que as funçõestail
,check
elogchecks
são utilizadas$args[0]
como espaço reservado para capturar o primeiro parâmetro sem nome passado com sua chamada de função.PowerShell
Notas de suporte lógico
2> $Log
conforme mencionado anteriormente para redirecionarffmpeg
a saída do comando para um arquivo de log.start-process
para executar offmpeg
comando dentro da lógica para garantir a funcionalidade adequada.get-content
com o-tail 1
parâmetro para monitorar o conteúdo mais recente no log.do while
loop para monitorar periodicamente o final doffmpeg
arquivo de log em intervalos de 5 segundos, garantindo que o conteúdo seja diferente da verificação anterior de 5 segundos.start-sleep
em pontos estratégicos para introduzir atrasos, permitindo tempo para verificações posteriores pós-execução de processos, etc.Recursos de apoio
Funções
Processo inicial
Iniciar-Sleep
Obter conteudo
sobre fazer
about_Comparison_Operators