如何识别 java 中是否执行了批处理文件?
how to recognize batch file is executed or not in java?
我正在尝试使用以下代码在 java 中执行我的批处理文件
String Extraction="cmd.exe /c start C:\task\Extracting.bat ";
Runtime.getRuntime().exec(Extraction);
System.out.println("Extracted...");
这里,我想在执行完批处理文件后执行打印语句。
但是如果运行上面的代码,它首先打开命令提示符和运行s批处理文件,然后突然执行批处理文件运行s之前的打印语句。帮我解决这个问题。
使用我的新代码从 Java 应用程序 运行 该命令,我们首先构建然后执行命令,如下所示:
// build my command as a list of strings
List<String> command = new ArrayList<String>();
command.add("ls");
command.add("-l");
command.add("/var/tmp");
// execute my command
SystemCommandExecutor commandExecutor = new SystemCommandExecutor(command);
int result = commandExecutor.executeCommand();
// get the output from the command
StringBuilder stdout = commandExecutor.getStandardOutputFromCommand();
StringBuilder stderr = commandExecutor.getStandardErrorFromCommand();
// print the output from the command
System.out.println("STDOUT");
System.out.println(stdout);
System.out.println("STDERR");
System.out.println(stderr);
资源Link:
- Java exec - 使用 Java ProcessBuilder 和执行系统进程
过程(第 1 部分)
- Java exec - 使用 Java ProcessBuilder 和执行系统进程
过程(第 2 部分)
Retrieving Details About Batch Jobs
提交批处理作业时,批处理 运行 时间会创建一个 JobExecution 实例来跟踪它。 JobExecution 有获取作业开始时间、作业完成时间、作业退出状态等各种详细信息的方法。要获取执行 ID 的 JobExecution,您可以使用 JobOperator.getJobExecution(executionId) 方法。
package javax.batch.runtime;
public interface JobExecution {
long getExecutionId();
java.lang.String getJobName();
javax.batch.runtime.BatchStatus getBatchStatus();
java.util.Date getStartTime();
java.util.Date getEndTime();
java.lang.String getExitStatus();
java.util.Date getCreateTime();
java.util.Date getLastUpdatedTime();
java.util.Properties getJobParameters();
}
还有一点值得一试。它等待执行
String Extraction="cmd.exe /c start C:\task\Extracting.bat ";
//Runtime.getRuntime().exec(Extraction);
final Process p = new ProcessBuilder("cmd.exe", "/c", "start /WAIT C:\task\Extracting.bat").redirectErrorStream(true).start();
p.waitFor();
System.out.println("Job done!!");
这里java的作用是调用cmd,然后OS执行写在批处理文件中的指令:
您可以查看以下代码:进程句柄将由 exec 方法return编辑。
通过使用 waitFor() 它等待子进程完成,然后 returns 退出代码。
只有路径有问题才return1,否则成功则为0。
public class TestMe2 {
public static void main(String[] args) {
Process p=null;
String Extraction="cmd.exe /c start C:\hello.bat ";
try {
p=Runtime.getRuntime().exec(Extraction);
System.out.println(p.waitFor());
} catch (Exception er) {
er.printStackTrace();
}finally{
}
}
}
我正在尝试使用以下代码在 java 中执行我的批处理文件
String Extraction="cmd.exe /c start C:\task\Extracting.bat ";
Runtime.getRuntime().exec(Extraction);
System.out.println("Extracted...");
这里,我想在执行完批处理文件后执行打印语句。 但是如果运行上面的代码,它首先打开命令提示符和运行s批处理文件,然后突然执行批处理文件运行s之前的打印语句。帮我解决这个问题。
使用我的新代码从 Java 应用程序 运行 该命令,我们首先构建然后执行命令,如下所示:
// build my command as a list of strings
List<String> command = new ArrayList<String>();
command.add("ls");
command.add("-l");
command.add("/var/tmp");
// execute my command
SystemCommandExecutor commandExecutor = new SystemCommandExecutor(command);
int result = commandExecutor.executeCommand();
// get the output from the command
StringBuilder stdout = commandExecutor.getStandardOutputFromCommand();
StringBuilder stderr = commandExecutor.getStandardErrorFromCommand();
// print the output from the command
System.out.println("STDOUT");
System.out.println(stdout);
System.out.println("STDERR");
System.out.println(stderr);
资源Link:
- Java exec - 使用 Java ProcessBuilder 和执行系统进程 过程(第 1 部分)
- Java exec - 使用 Java ProcessBuilder 和执行系统进程 过程(第 2 部分)
Retrieving Details About Batch Jobs
提交批处理作业时,批处理 运行 时间会创建一个 JobExecution 实例来跟踪它。 JobExecution 有获取作业开始时间、作业完成时间、作业退出状态等各种详细信息的方法。要获取执行 ID 的 JobExecution,您可以使用 JobOperator.getJobExecution(executionId) 方法。
package javax.batch.runtime;
public interface JobExecution {
long getExecutionId();
java.lang.String getJobName();
javax.batch.runtime.BatchStatus getBatchStatus();
java.util.Date getStartTime();
java.util.Date getEndTime();
java.lang.String getExitStatus();
java.util.Date getCreateTime();
java.util.Date getLastUpdatedTime();
java.util.Properties getJobParameters();
}
还有一点值得一试。它等待执行
String Extraction="cmd.exe /c start C:\task\Extracting.bat ";
//Runtime.getRuntime().exec(Extraction);
final Process p = new ProcessBuilder("cmd.exe", "/c", "start /WAIT C:\task\Extracting.bat").redirectErrorStream(true).start();
p.waitFor();
System.out.println("Job done!!");
这里java的作用是调用cmd,然后OS执行写在批处理文件中的指令:
您可以查看以下代码:进程句柄将由 exec 方法return编辑。 通过使用 waitFor() 它等待子进程完成,然后 returns 退出代码。 只有路径有问题才return1,否则成功则为0。
public class TestMe2 {
public static void main(String[] args) {
Process p=null;
String Extraction="cmd.exe /c start C:\hello.bat ";
try {
p=Runtime.getRuntime().exec(Extraction);
System.out.println(p.waitFor());
} catch (Exception er) {
er.printStackTrace();
}finally{
}
}
}