A ajuda do script em lote é necessária

1

Eu criei um script em lote que reinicia um executável, estou tentando obtê-lo para a saída para um arquivo de log mostrando todos os erros.

Meu script é

@echo on

timeout /t 03

set logfile=c:\users\administrator\desktop\C4W\Logs\status.log
echo starting system.exe at %date% %time% >> %logfile%
"./system.exe" -connection "sql instance" -model "model number" -username "admin" -password "" -id 2  >> %logfile%

Pause

Exit 0

Como você pode ver, meu executável está se conectando a uma instância sql e a um modelo dentro do banco de dados sql. Quando executo o arquivo em lote, recebo um erro na tela dizendo “A entrada não é uma string Base-64 válida, pois contém um caractere 64 não-base, mais de dois caracteres de preenchimento ou um caractere de espaço não-branco entre o preenchimento personagens". Mas o meu arquivo de log não mostra este erro, apenas mostra que o meu executável foi executado com a data e hora exibida. Eu tentei colocar o & símbolo em > > & % logfile%, mas eu não vejo a mensagem de erro na janela do cmd e meu log também não mostra.

Alguém pode ver onde estou errado?

    
por Paul508 04.10.2017 / 15:39

1 resposta

1

Para redirecionar a saída de erro do comando para o seu arquivo de log, junto com qualquer saída padrão, anexe >>logfile.txt 2>>&1 ao seu comando, assim:

yourcommand.exe >>logfile.txt 2>>&1

A sintaxe 2>>&1 é necessária para "combinar" os fluxos StdOut e SteErr para redirecionamento para o arquivo de log.

Mais informações

por 04.10.2017 / 17:02