É necessária ajuda com script em lote

É necessária ajuda com script em lote

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>>&1ao seu comando, assim:

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

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

Mais Informações

informação relacionada