1

一部のTomcatを停止するJavaプログラムからバッチファイルを開始しています。コマンドラインから開始すると、バッチ自体が機能します。しかし、Javaから起動しても機能しません。問題は、バッチが保存されているフォルダーから呼び出されないことです。したがって、いくつかのファイルを見つけることができません。私の質問は、バッチが存在するフォルダーに切り替えてバッチを開始し、そのフォルダーから実行して必要なファイルを見つける方法です。

たとえば、バッチはフォルダー c:\foobar\mybatch.cmd にあります。

これが私のコードで、現在バッチがJavaからどのように呼び出されるかです

public void startBatch(Path batchPath) {

    if (batchPath == null) {
        throw new IllegalArgumentException("cannot start batch without path to it");
    }
    if (!Files.exists(batchPath)){
        throw new IllegalArgumentException("batch does not exist " + batchPath.toString());
    }

    try {
        log.info("starting batch " + batchPath.toAbsolutePath().toString());
        String command = "cmd.exe /c " + batchPath.toAbsolutePath().toString();
        Process p;
        p = Runtime.getRuntime().exec(command);

        p.waitFor();

        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

        String line = reader.readLine();
        while (line != null) {
            log.info(line);
            line = reader.readLine();
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // TODO Auto-generated method stub

}
4

1 に答える 1

0

cd c:\foobar\バッチファイル自体を入れるだけです。

于 2013-03-26T19:21:55.743 に答える