我有一个批处理文件(test.bat),它有copy NUL test.txt
命令。我有一个java程序,当我运行它时,当我在网络浏览器中输入一个URL,例如http://localhost:8080/runbatchfileparam
时,我得到{"result":true}
或{"result":false}
的结果。 True表示java应用程序已正确执行批处理文件(test.txt在目录下创建)。
我现在想做的是,我希望java程序能够接受参数。例如。用户应该能够在Web浏览器中输入http://localhost:8080/runbatchfileparam/testabc.bat
作为URL,如果找到并执行testabc.bat文件(在桌面下),则结果应为{"result":true}
,如果是testabc,则{"result":false}
找不到.bat文件但未执行。 (注意:所有批处理文件都在桌面文件路径下创建:C:/Users/attsuap1/Desktop
)
我已经编辑了我的控制器以获取参数并完成@PathVariable。在我的代码中,fileName
变量引用我创建的批处理文件名(test.bat,test123.bat)test.bat中的命令:copy NUL test.txt
test123.bat中的命令:{{1 }}。但是,我一直得到结果为{“result”:false}。这意味着java程序无法找到批处理文件并执行它。
以下是我的代码:
RunBatchFile.java
copy NUL test123.txt
ResultFormat.java
public ResultFormat runBatch(String fileName) {
String var = fileName;
String filePath = "C:/Users/attsuap1/Desktop" + var;
try {
Process p = Runtime.getRuntime().exec(filePath);
int exitVal = p.waitFor();
return new ResultFormat(exitVal == 0);
} catch (Exception e) {
e.printStackTrace();
return new ResultFormat(false);
}
}
BatchFileController
private boolean result;
public ResultFormat(boolean result) {
this.result = result;
}
public boolean getResult() {
return result;
}
Application.java
private static final String template = "Sum, %s!";
@RequestMapping("/runbatchfileparam/{param}")
public ResultFormat runbatchFile(@PathVariable("param") String fileName ) {
RunBatchFile rbf = new RunBatchFile();
return rbf.runBatch(fileName);
}
我需要编辑什么或者我应该在代码中添加什么才能达到我的目的?
答案 0 :(得分:0)
这一行之后:
String filePath = "C:/Users/attsuap1/Desktop" + var;
尝试打印filePath
的内容,我怀疑你想出这样的东西:
C:/Users/attsuap1/Desktoptestabc.bat