使用批处理脚本(窗口)触发2个java程序:多个查询

时间:2015-06-10 09:01:46

标签: java batch-file

查询1
我有2个独立的java程序。
- MasterProgram.java - 由于数据量较大而长时间运行 - MailProgram.java - 用于每30分钟通过邮件发送日志文件
我使用单个batchScript程序来触发这两个java程序。

我的要求是,直到“MasterProgram.java”完成,每30分钟“MailProgram.java”必须运行,一旦“MasterProgram.java”完成“MailProgram.java”必须运行。
任何想法/替代解决方案都可以实现逻辑。

查询2(与上述查询无关):
我使用批处理脚本异步触发2个java程序。

myprogram.bat

@ECHO OFF
start /b java Mainprogram    :: program1
start /b java MainprogramAnother    :: program2

是否可以回显程序的%ERRORLEVEL%,如下所示?

myprogram.bat
@ECHO OFF
start /b java Mainprogram    :: program1
start /b java MainprogramAnother    :: program2

echo "Program1 errorlevel"
:: i am aware that below will not print program1 status. 
:: Can you suggest the right code to display %ERRORLEVEL% this way..
echo %ERRORLEVEL%   
echo "Program2 errorlevel"
echo %ERRORLEVEL%   

如果有其他方式,请告诉我。

1 个答案:

答案 0 :(得分:1)

好的,这是一个非常狡猾的解决方案,但为什么不试一试,看看它是否有效:

Main.bat

@echo off
start Side.bat
java MasterProgram.java  
start java MailProgram.java
start taskkill /f /im cmd.exe

Side.bat

@echo off
:: Make sure 'MasterProgram.java' has properly started
sleep 5
:loop
start java MailProgram.java
sleep 1800
:: 1800 seconds = 30 minutes
goto loop

Main.bat 启动 side.bat 并在运行MasterProgram.java之前等待MailProgram.java执行。它以cmd.exe

的所有实例结束

Side.bat 每30分钟运行一次MailProgram.java,直到taskkilled Main.bat为止。

它应该适合你。

至于你的第二个问题,只需将其存储在变量中即可。

@ECHO OFF
start /b java Mainprogram    :: program1
set p1=%ERRORLEVEL% 
start /b java MainprogramAnother    :: program2
set p2=%ERRORLEVEL% 

echo "Program1 errorlevel"
echo %p1%  
echo "Program2 errorlevel"
echo %p2%