
Eu criei um script em lote que reinicia um executável. Estou tentando fazer com que ele seja enviado para um arquivo de log mostrando quaisquer erros.
Meu roteiro é
@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 não base 64, mais de dois caracteres de preenchimento ou um caractere de espaço não em branco entre o preenchimento personagens". Mas meu arquivo de log não mostra esse erro, apenas mostra que meu executável foi executado com data e hora exibidas. Tentei colocar o símbolo & em >>& %logfile%, mas 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 errando?
Responder1
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 2>>&1
sintaxe é necessária para "combinar" os fluxos StdOut e SteErr para redirecionamento para o arquivo de log.