将URL中的参数链接到java中的必需函数

将URL中的参数链接到java中的必需函数,java,batch-file,Java,Batch File,我有一个执行批处理文件的JavaWeb服务。我已经完成了我的控制器课程。在控制器类中,有一个参数,变量为stringfilename。我不知道如何编写代码使文件名执行其功能 我将显示我的代码,然后解释fileName应该做什么 RunBatchFile.java public ResultFormat runBatch(String fileName) { String var = fileName; String filePath = ("C:/Users/attsuap1/

我有一个执行批处理文件的JavaWeb服务。我已经完成了我的控制器课程。在控制器类中,有一个参数,变量为
stringfilename
。我不知道如何编写代码使
文件名
执行其功能

我将显示我的代码,然后解释
fileName
应该做什么

RunBatchFile.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);
    }
}
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);
}
BatchFileController.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);
    }
}
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);
}
当用户键入
http://localhost:8080/runbatchfileparam/test.bat
作为URL,必须执行test.bat文件。当用户键入test123.bat而不是test.bat时,必须执行test123.batch文件。因此,我无法将字符串文件路径编码为
“C:/Users/attsuap1/Desktop/test.bat”
,因为这将执行test.bat文件。我希望允许用户选择要执行的批处理文件。我认为这很容易做到,但我不知道如何做到这一点

如何编写代码来链接
字符串文件名
变量,使其执行它应该执行的操作?我尝试了一些方法,但是它们没有给出我想要的结果


有人请帮帮我,非常感谢。

我想你已经完成了这里的工作

有两种方法可以执行所需的批处理文件

  • 不要在URL参数中包含“.bat”, 而是将runBatch()方法中的.bat追加到参数中的任何文件中 e、 g

  • 但是,如果您确实希望在URl中包含.bat,则必须使用下面的正则表达式映射,以便spring不会忽略尾随圆点的文件名

    @RequestMapping("/runbatchfileparam/{param:.+}")  
    public ResultFormat runbatchFile(@PathVariable("param") String fileName) 
    {  
    RunBatchFile rbf = new RunBatchFile();  
    return rbf.runBatch(fileName);  
    }  
    

  • fileName
    的值是否以分隔符(
    \
    /
    )开头?如果不是,您将名称连接到路径以获得“Desktoptest.bat”。我不希望这样。如何更改itI我希望文件名只是一个参数,允许用户选择要执行的批处理文件。现在我有两个批处理文件(test.bat和test123.bat)。我不想编码为
    C:/Users/attsuap1/Desktop/test.bat
    ,因为这将直接执行test.bat文件,因此没有必要使用parameter@KlitosKyriacou所以,是的,它有一个分隔符,我不希望它被连接起来。非常感谢您的帮助。我将尝试此方法。批处理文件无法执行。如果我使用第一种方法,我只需在URL中键入
    http://localhost:8080/runbatchfileparam/test123
    没有
    .bat
    ?我试过了,但批处理文件仍然没有执行。您看到了什么错误?我认为您的字符串文件路径=(“C:/Users/attsuap1/Desktop”中缺少了一个正斜杠,在Desktop之后应该有“/”字符串文件路径=(“C:/Users/attsuap1/Desktop/”