Java 打开cmd窗口并发出多个命令
我必须在java应用程序的后台打开或执行cmd窗口。它以前就这样做过,而且效果非常好:Java 打开cmd窗口并发出多个命令,java,cmd,runtime.exec,Java,Cmd,Runtime.exec,我必须在java应用程序的后台打开或执行cmd窗口。它以前就这样做过,而且效果非常好: public String getEnvVar(String envVarName) throws Exception { String varName = "%" + envVarName + "%"; Process process = Runtime.getRuntime().exec( new String[]{"cmd.exe", "/C", "echo "
public String getEnvVar(String envVarName) throws Exception {
String varName = "%" + envVarName + "%";
Process process = Runtime.getRuntime().exec(
new String[]{"cmd.exe", "/C", "echo " + varName}
);
BufferedReader input = new BufferedReader(
new InputStreamReader(process.getInputStream())
);
varName = input.readLine();
process.destroy();
...
我的问题是:我有一个不同类的不同实例,并试图以上面代码中的方式打开cmd窗口:
private void execute() {
try {
String batchData = batchContent();
Process process = Runtime.getRuntime().exec(new String[]{"cmd.exe", "/C", batchData});
new File(sourceFile).delete();
new File(sourceFolder).delete();
process.destroy();
} catch (IOException ie) {
}
}
但这不起作用……我用谷歌找出了原因,但找不到真正的原因
甚至
由于测试原因,不会更改为我事先创建的临时文件夹
怎么了
编辑//
我现在试着:
private void upload() {
try {
//Process process = Runtime.getRuntime().exec(batchDataFile);
//Process process = Runtime.getRuntime().exec("cmd.exe /C " + batchDataFile);
Process process = Runtime.getRuntime().exec("cmd.exe /C " + "\"" + batchDataFile + "\"");
//new File(sourceCodeFile).delete();
//new File(batchDataFile).delete();
//new File(sourceCodeFolder).delete();
process.destroy();
} catch (IOException ie) {
ie.printStackTrace();
}
}
另外,我还尝试在没有Java应用程序的情况下运行生成的批处理skcript,它可以正常工作使用Java中的OS命令行是一种糟糕的风格。考虑编写.BAT脚本,启动java应用程序。可能有一个IOExExt,但没有捕获。记录异常或传播异常是一个很好的做法。。。我正在从java应用程序中执行批处理脚本。也没有例外。我已经为测试启用了日志记录。没有例外,就没有执行。但是显示了一个简单的println,它不是死代码。我知道您正在尝试使用来自java的OS命令。这是一种糟糕的风格。改为编写批处理脚本。是否尝试在单独的线程上运行?
private void upload() {
try {
//Process process = Runtime.getRuntime().exec(batchDataFile);
//Process process = Runtime.getRuntime().exec("cmd.exe /C " + batchDataFile);
Process process = Runtime.getRuntime().exec("cmd.exe /C " + "\"" + batchDataFile + "\"");
//new File(sourceCodeFile).delete();
//new File(batchDataFile).delete();
//new File(sourceCodeFolder).delete();
process.destroy();
} catch (IOException ie) {
ie.printStackTrace();
}
}