【发布时间】:2010-05-18 13:14:40
【问题描述】:
如果我将脚本的输出通过管道传输到日志文件中,是否也可以返回错误级别:
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%
测试2:
@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.
那么我怎样才能至少解析我的日志文件,如果在日志中找到字符串,我可以将值作为错误级别返回?
【问题讨论】:
标签: batch-file cmd