Se requiere ayuda con el script por lotes

Se requiere ayuda con el script por lotes

He creado un script por lotes que reinicia un ejecutable, estoy intentando que se genere en un archivo de registro que muestre los errores.

Mi guión es

@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 puede ver, mi ejecutable se está conectando a una instancia de SQL y a un modelo dentro de la base de datos de SQL. cuando ejecuto el archivo por lotes aparece un error en la pantalla que dice "La entrada no es una cadena Base-64 válida ya que contiene un carácter que no es de base 64, más de dos caracteres de relleno o un carácter de espacio que no es en blanco entre el relleno". caracteres". Pero mi archivo de registro no muestra este error, solo muestra que mi ejecutable se ejecutó con la fecha y hora mostradas. Intenté poner el símbolo & en >>& %logfile% pero luego no veo el mensaje de error en la ventana cmd y mi registro tampoco lo muestra.

¿Alguien puede ver dónde me estoy equivocando?

Respuesta1

Para redirigir la salida de error del comando a su archivo de registro, junto con cualquier salida estándar, agregue >>logfile.txt 2>>&1a su comando, de esta manera:

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

La 2>>&1sintaxis es necesaria para "combinar" las secuencias StdOut y SteErr para redirigirlas al archivo de registro.

Más información

información relacionada