возможно ли вернуть уровень ошибок также, если я передам вывод script в файл журнала:
test1.bat:
call test2.bat 2>&1 | tee log.txt
echo ERRORLEVEL: %ERRORLEVEL%
test2.bat:
exit /B 1
Вывод при вызове test1.bat:
ERRORLEVEL: 0
Уровень ошибок всегда равен 0.
Проблема заключается в том, что я хочу вызвать еще один script внутри моего script, где вывод должен быть перенаправлен синхронно с выходом, указанным в командной строке, поэтому для меня это просто > . Я пробовал несколько идей, но результат в том, что труба всегда, кажется, уничтожает данный уровень ошибки...: (
Можете ли вы дать мне дополнительные предложения?
Спасибо заранее...:)
Спасибо за ваш ответ... К сожалению, это не работает...:( Смотрите, что я пробовал:
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.
Итак, как я могу хотя бы разобрать мой файл журнала, и если строка найдена в журнале, я могу вернуть значение как уровень ошибок?