如果我将脚本的输出传递给日志文件,是否可以返回errorlevel:
test1.bat:
call test2.bat 2>&1 | tee log.txt
echo ERRORLEVEL: %ERRORLEVEL%
Run Code Online (Sandbox Code Playgroud)
test2.bat:
exit /B 1
Run Code Online (Sandbox Code Playgroud)
调用test1.bat时的输出:
ERRORLEVEL: 0
Run Code Online (Sandbox Code Playgroud)
errorlevel始终为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%
Run Code Online (Sandbox Code Playgroud)
测试2:
@echo off
set VAR1=ERROR
echo VAR1 in test2: %VAR1%
exit /B 1
Run Code Online (Sandbox Code Playgroud)
调用test1.bat时的输出:
VAR1 before test2: " "
VAR1 in test2: ERROR
VAR1 after test2: " "
Run Code Online (Sandbox Code Playgroud)
作为另一种解决方案,我试图将"ERRORVALUE:1"保存到日志文件中,以防出现错误.在主题中,我想解析日志,寻找这个字符串.不幸的是,将查找结果保存到环境变量也不行,我做了如下:
FOR /F "tokens=1 …Run Code Online (Sandbox Code Playgroud) 我有以下问题:
我创建了一个批处理脚本,在那里调用自己(因为能够并行写入日志).在脚本中,我启动另一个进程(如start startServer.bat),它启动一个java进程并一直保持打开状态.
在我的原始脚本中,我等待30秒,检查进程是否正在运行并执行以下操作:
exit /B 0
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,窗口显示正在评估退出/ B 0,但窗口仍然保持打开状态.当我用另一个进程关闭窗口(意味着在我的.bat中启动"子"进程)时,我的脚本继续运行.
所以:
scriptA.bat
-> in there I call: start startServer.bat
-> wait 30 seconds
-> check is server is started
-> exit /B 0
Process hangs up!
Run Code Online (Sandbox Code Playgroud)
如果我将另一个脚本包裹起来,那是非常奇怪的,例如:
scriptB.bat
-> call scriptA.bat
-----> in there I call: start startServer.bat
-----> wait 30 seconds
-----> check if server is started
-----> exit /B 0
-> scriptA.bat continues without any hangup!
Run Code Online (Sandbox Code Playgroud)
我也尝试了相同的退出0(没有/ B),同样的结果!在第一种情况下,它挂起,在第二种情况下,我的窗口按预期关闭...
你以前有没有人遇到这样的问题,知道这里有什么问题吗?流程挂断了!