gpt4 book ai didi

java - 从java调用批处理需要从当前批处理文件夹启动

转载 作者:行者123 更新时间:2023-12-01 04:47:07 26 4
gpt4 key购买 nike

我正在从我的java程序启动一个批处理文件,这将停止一些tomcat,如果从命令行启动批处理本身就可以工作。但是从 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

}

最佳答案

您应该将 cd c:\foobar\ 放入批处理文件本身。

关于java - 从java调用批处理需要从当前批处理文件夹启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15645552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com