est-il possible de retourner le errorlevel aussi si je redirigez la sortie d'un script dans un fichier journal:fichier batch de Windows: Tuyau détruit mon code de retour
test1.bat:
call test2.bat 2>&1 | tee log.txt
echo ERRORLEVEL: %ERRORLEVEL%
test2.bat:
exit /B 1
sortie lors de l'appel test1.bat:
ERRORLEVEL: 0
Le errorlevel est toujours 0.
Le problème est, je veux appeler un autre script dans mon script où la sortie doit être réorienté de manière synchrone avec la sortie indiqué dans la ligne de commande, donc simple > ne me suffit pas. J'ai essayé plusieurs idées, mais le résultat est que le tuyau toujours semble détruire le niveau d'erreur donné ... :(
Pouvez-vous me donner d'autres suggestions?
Merci à l'avance ... :)
Merci pour votre réponse ... Malheureusement, cela ne fonctionne pas aussi bien ... :(voir ce que j'ai essayé:
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
Sortie lorsque vous appelez test1.bat:
VAR1 before test2: " "
VAR1 in test2: ERROR
VAR1 after test2: " "
Comme d'autre solution que j'ai essayé de sauver "ERRORVALUE: 1" dans le fichier journal en cas d'erreur. Dans le principal, je voulais analyser le journal à la recherche de cette chaîne. sauver Malheureusement, la découverte, résultat à une variable d'environnement ne fonctionne pas aussi bien, je ne comme suit:
FOR /F "tokens=1 delims=" %%A in ('type %logDir%\03_applySqls.log | find /c "ERRORVALUE: 1"') do SET val=%%A
erreur que je reçois:
"|" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Alors, comment puis-je au moins analyser mon fichier journal et cas la chaîne est trouvée dans le journal je peux retourner la valeur comme un niveau d'erreur?
très liés: http://stackoverflow.com/questions/11170753/windows-command-interpreter-how-to-obtain-exit-code-of-first -piped-commande – eckes