es posible regresar al nivel de error si también canalizar la salida de un script en un archivo de registro:archivo por lotes de Windows: Pipe destruye mi código de retorno
Test1.bat:
call test2.bat 2>&1 | tee log.txt
echo ERRORLEVEL: %ERRORLEVEL%
test2.bat:
exit /B 1
salida Test1.bat al llamar:
ERRORLEVEL: 0
El nivel de error es siempre 0.
El problema es, quiero llamar a otro script dentro de mi guión donde la salida debe ser redirigido de forma sincronizada con el resultado que se muestra en la línea de comandos, por lo tanto, un simple > no es suficiente para mí. He intentado varias ideas, pero resultado es que la tubería siempre parece destruir el nivel de error dado ... :(
¿Me puede dar más sugerencias?
Gracias de antemano ... :)
Gracias por su respuesta ... Desafortunadamente esto no funciona así ... :(Ver lo que he intentado:
Test1.bat:
echo off
set VAR1=" "
echo VAR1 before test2: %VAR1%
call test2.bat 2>&1 | tee log.txt
echo VAR1 after test2: %VAR1%
test2:
@echo off
set VAR1=ERROR
echo VAR1 in test2: %VAR1%
exit /B 1
salida al llamar Test1.bat:
VAR1 before test2: " "
VAR1 in test2: ERROR
VAR1 after test2: " "
Como otra solución traté de salvar "ERRORVALUE: 1" en el archivo de registro en caso de que haya un error. En el mainscript quería analizar el registro buscando esta cadena. Desafortunadamente salvar el hallazgo-resultado a una variable de entorno no funciona tan bien, yo como sigue:
FOR /F "tokens=1 delims=" %%A in ('type %logDir%\03_applySqls.log | find /c "ERRORVALUE: 1"') do SET val=%%A
error que consigo:
"|" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Entonces, ¿cómo puedo al menos analizar mi archivo de registro y en caso de que la cadena se encuentre en el registro, ¿puedo devolver el valor como un nivel de error?
muy relacionados: http://stackoverflow.com/questions/11170753/windows-command-interpreter-how-to-obtain-exit-code-of-first -piped-command – eckes