Como posso produzir o Handbrake na tela e em um arquivo?
Então, eu tenho usado a linha de comando do Handbrake para codificar minha coleção de vídeos para armazenar no meu NAS para que eu possa usá-lo no meu HTPC. Eu estava procurando uma maneira de produzir as duas coisas na tela para que eu pudesse assistir a sua saída enquanto codifica, mas também em um arquivo para que eu pudesse voltar e observar uma sessão de codificação específica.
Minha solução para isso foi usar uma janela do Powershell para executar a codificação e a saída em um arquivo, depois outra janela do Powershell para ler o arquivo de log e exibi-lo na tela. Isso funciona, mas eu quero melhorá-lo, pois não é perfeito. Como o script do arquivo de leitura é lido em um intervalo definido, ele perde linhas. Além disso, se eu reduzir o intervalo, isso afeta o desempenho do sistema, tornando a codificação um pouco mais lenta. Existe uma maneira de redirecionar a saída da primeira janela para um arquivo e para a tela?
O primeiro script do powershell (aquele que inicia a codificação) chamado "Convert1.ps1" (executado no diretório de instalação do freio de mão):
net time \\ODIN |find "Current time"
./HandbrakeCLI.exe -i "<input file>" -o "<output file>" <handbrake parameters>
O segundo script do PowerShell a ser produzido em um arquivo, chamado "Start_Convert.ps1":
d:\Conversions\Convert.ps1 2>&1 | out-file d:\Conversions\Completed\Movies\9.29.2010.log
O terceiro script do powershell a ser lido nesse arquivo de log, chamado "Watch_Output.ps1":
while (1)
{
(Get-Content d:\Conversions\Completed\Movies\9.29.2010.log)[-1]
Start-sleep 5
}
Gostaria, idealmente, de obter tudo isso em uma janela do PowerShell executando um único script para iniciar a codificação, enviar para um arquivo e exibi-lo na tela.
Editar (Adicionando Solução): 2 maneiras diferentes de fazer isso, eu vou com o último, pois é mais simples.
Caminho # 1 - Script Start-Job Resulting para iniciar minhas conversões:
Start-Job -Name VideoConvert -ScriptBlock { d:\Conversions\Convert.ps1 2>&1 | out-file d:\Conversions\Movies\Movie.log }
Get-FileTail -Wait Encoding Unicode -Path D:\Conversions\Completed\Movies\Movie.log
Maneira # 2 - Script resultante do Tee-Object para iniciar minhas conversões:
d:\Conversions\Convert.ps1 2>&1 |Tee-Object -File D:\Conversions\Completed\Movies\Movie.log
Mais uma vez obrigado. Isso funciona exatamente como eu queria que funcionasse.