原创于 【模棱博客】
java运行windows-bat文件
在Java中运行一个简单的bat文件。
我们使用 ProcessBuilder这样运行Windows批处理文件:
Java
1 2 3 4 5 6 7 8 9 | ProcessBuilder processBuilder = new ProcessBuilder("C:\\Users\\mkyong\\hello.bat");
//or
ProcessBuilder processBuilder = new ProcessBuilder(); processBuilder.command("cmd", "/c", "hello.bat"); File dir = new File("C:\\Users\\mkyong\\"); processBuilder.directory(dir); |
或者, Runtime.getRuntime().exec像这样:
Java
1 2 | Process process = Runtime.getRuntime().exec( "cmd /c hello.bat", null, new File("C:\\Users\\mkyong\\")); |
Java示例
bat文件路径 C:\\Users\\mkyong\\hello.bat
Java
1 2 | @echo off echo Hello World |
Java示例读取上面的bat文件并显示输出。
JavaRunBatFile.java
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | package com.mkyong.concurrency;
import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader;
public class JavaRunBatFile {
public static void main(String[] args) {
ProcessBuilder processBuilder = new ProcessBuilder("C:\\Users\\mkyong\\hello.bat");
//Process process = Runtime.getRuntime().exec( // "cmd /c hello.bat", null, new File("C:\\Users\\mkyong\\"));
try {
Process process = processBuilder.start();
StringBuilder output = new StringBuilder();
BufferedReader reader = new BufferedReader( new InputStreamReader(process.getInputStream()));
String line; while ((line = reader.readLine()) != null) { output.append(line + "\n"); }
int exitVal = process.waitFor(); if (exitVal == 0) { System.out.println(output); System.exit(0); } else { //abnormal... }
} catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); }
}
} |
输出
Java
1 | Hello World |

