возможно ли вернуть уровень ошибки также, если я перенаправлю вывод скрипта в файл журнала:
test1.bat:
call test2.bat 2>&1 | tee log.txt
echo ERRORLEVEL: %ERRORLEVEL%
test2.bat:
exit /B 1
Вывод при вызове test1.bat:
ERRORLEVEL: 0
Уровень ошибки всегда равен 0.
Проблема в том, что я хочу вызвать другой скрипт внутри моего скрипта, где вывод должен быть перенаправлен синхронно с выводом, показанным в командной строке, поэтому простого> мне недостаточно. Я попробовал несколько идей, но в результате труба, кажется, всегда разрушает данный уровень ошибки ...: (
Можете ли вы дать мне какие-либо дополнительные предложения?
Заранее спасибо ...:)
Спасибо за ваш ответ ...
К сожалению, это не работает так же хорошо: :( Посмотрите, что я пытался:
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
Вывод при вызове test1.bat:
VAR1 before test2: " "
VAR1 in test2: ERROR
VAR1 after test2: " "
В качестве другого решения я попытался сохранить «ERRORVALUE: 1» в файле журнала на случай ошибки. В главном сценарии я хотел разобрать журнал, ища эту строку. К сожалению, сохранение результата поиска в переменную окружения также не работает, я сделал следующее:
FOR /F "tokens=1 delims=" %%A in ('type %logDir%\03_applySqls.log | find /c "ERRORVALUE: 1"') do SET val=%%A
Ошибка, которую я получаю:
"|" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Так как я могу хотя бы проанализировать мой лог-файл, и если в журнале найдена строка, я могу вернуть значение в качестве уровня ошибки?