使用java

时间:2017-12-12 08:01:05

标签: java batch-file

我有一个批处理文件(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);
}

我需要编辑什么或者我应该在代码中添加什么才能达到我的目的?

1 个答案:

答案 0 :(得分:0)

这一行之后:

String filePath = "C:/Users/attsuap1/Desktop" + var;

尝试打印filePath的内容,我怀疑你想出这样的东西:

  

C:/Users/attsuap1/Desktoptestabc.bat