私はコマンドcopy NUL test.txt
を持つバッチファイル(test.bat)を持っています。私はそれを実行し、WebブラウザでURLを入力すると、http://localhost:8080/runbatchfileparam
のようなJavaプログラムがありますが、結果は{"result":true}
または{"result":false}
のいずれかになります。 Trueは、Javaアプリケーションがバッチファイルを正しく実行したことを意味します(test.txtはディレクトリの下に作成されます)。Javaのパラメータを使用したバッチファイルの検索
私が今したいことは、私はjavaプログラムがパラメータを取ることができるようにしたいと思います。例えば。 WebブラウザにURLとしてhttp://localhost:8080/runbatchfileparam/testabc.bat
と入力し、testabc.batファイルが見つかって実行された場合(デスクトップの場合)は{"result":true}
、testabc.batファイルが見つからない場合は{"result":false}
となります。 (注:すべてのバッチファイルは、デスクトップのファイルパスの下に作成されます)
パラメータを入力して@PathVariableを実行するようにコントローラを編集しました。私のコードでは、fileName
変数は、私が作成したバッチファイル名(test.bat、test123.bat)を指します。test.batのコマンド:copy NUL test.txt
コマンド:test123.bat:copy NUL test123.txt
。しかし、私は結果を{"result":false}のままにしています。つまり、Javaプログラムはバッチファイルを見つけて実行できません。ここで
は私のコードです:
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);
}
}
ResultFormat.java
private boolean result;
public ResultFormat(boolean result) {
this.result = result;
}
public boolean getResult() {
return result;
}
BatchFileController
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);
}
Application.java
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
私は編集することが何をしなければならないのか、私は私が望むものを達成するためのコードに何を追加する必要がありますか?
こんにちは、ご協力いただきありがとうございます。もっと説明していただけますか?私はこれに非常に新しいので、私はabit混乱を感じている –