通过使用开始,您将askcmd.exe在后台启动批处理文件:
Process p = Runtime.getRuntime().exec("cmd /c start " + path + "\\RunFromCode.bat");
所以,从Java(cmd.exe)启动的进程在后台进程完成之前返回。
删除start命令在前台运行批处理文件 – 那么waitFor()将等待批处理文件完成:
Process p = Runtime.getRuntime().exec("cmd /c " + path + "\\RunFromCode.bat");
根据OP,重要的是让控制台窗口可用 – 这可以通过添加/ wait参数来完成,如@Noofiz所建议的。以下SSCCE为我工作:
public class Command {
public static void main(String[] args) throws java.io.IOException, InterruptedException {
String path = "C:\\Users\\andreas";
Process p = Runtime.getRuntime().exec("cmd /c start /wait " + path + "\\RunFromCode.bat");
System.out.println("Waiting for batch file ...");
p.waitFor();
System.out.println("Batch file done.");
如果RunFromCode.bat执行EXIT命令,则命令窗口将自动关闭。否则,命令窗口保持打开,直到您使用EXIT显式退出它 – 在这两种情况下,java进程都在等待窗口关闭。
通过使用开始,您将askcmd.exe在后台启动批处理文件:Process p = Runtime.getRuntime().exec("cmd /c start " + path + "\\RunFromCode.bat");所以,从Java(cmd.exe)启动的进程在后台进程完成之前返回。删除start命令在前台运行批处理文件 – 那么waitFor()将等待批处理文件完成:Process ...
Runtime
.get
Runtime
.
exec
()会使用一独立的process a处理参数命令,并且返回一个管理该process a的process。
程序主
进程
会
等待
process一定的时间,但是时间很少,可能process根本无法
完成
工作就结束了。
因此,针对使用较长时间做工作的process,就需要调用
wait
For方法。
该方法会引起当前Thread
等待
,直到process中断。
log.info("同步整个资源目录");
// 同步整个资源目录
List<Process> processes = new LinkedList<Process>();
//获取资源服务器
List<ResourceServer> servers = getResourceServer();
for (ResourceServer server :...
原文地址:
http://yearsaaaa123789.iteye.com/blog/1404865
我是在写一段用
java
执行文件夹拷贝的时候遇到的这个问题,一开始想的是用递归copy的方式去做,代码如下:
//copy文件夹
public static boolean copyDirectory(String sourcePath,String targetPath) throws E
最近在
java
中调用perl程序,由于perl中使用斯坦福分词器,有很多控制台输出,导致一直阻塞在process.
wait
for( ),只有强制终止
java
程序后,结果文件才会输出。根据下面两个博客内容成功解决。
用
Java
编写应用时,
1.
Runtime
.get
Runtime
()可以取得当前JVM的运行时环境,这也是在
Java
中唯一一个得到运行时环境的方法
2.
Runtime
中的exit方法是退出JVM
exec
(String[] cmdarray, String[] envp, File dir)
Exec
utes the specified command and arguments in a separate process with the specified environment and working directory.
最近在开发一个系统时,需求是
Java
调用Python脚本,这里我使用 Process process =
Runtime
.get
Runtime
().
exec
() 来调用,脚本用命令行能完整运行,但用
Java
调却一直转圈圈,等很久也不见结束.文章为记录…
process参考
wait
for挂起解析
1.使用process调用py脚本
public static ResultVO pyInvoke(String[] arguments) throws Exception {
如果要在
Java
中调用shell脚本时,可以使用
Runtime
.
exec
或ProcessBuilder.start。它们都会返回一个Process对象,通过这个Process可以对获取脚本执行的输出,然后在
Java
中进行相应处理。例如,下面的代码:
Process process =
Runtime
.get
Runtime
().
exec
(cmd);
`
Runtime
.
exec
()` 方法是
Java
中用于执行操作系统命令的方法。它允许
Java
应用程序启动另一个
进程
并与其进行通信。
`
Runtime
.
exec
()` 方法有多种重载形式,它们允许您指定要执行的命令及其参数,并指定如何处理
进程
的输出和错误流。
例如,以下代码将在 Windows 系统上执行 `dir` 命令,并将命令的输出打印到控制台:
```
java
Process process =
Runtime
.get
Runtime
().
exec
("cmd /c dir");
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
在上面的代码中,`
Runtime
.get
Runtime
().
exec
("cmd /c dir")` 会执行一个新的
进程
,该
进程
将运行 `cmd /c dir` 命令。使用 `BufferedReader` 从
进程
的输出流中读取数据,并将其打印到控制台上。注意,在读取完输出流之后,我们需要调用 `Process.
wait
For()` 方法
等待
进程
完成
其执行。