基本上我需要通过java程序执行2个命令,就像你只是在终端输入它一样。
所以喜欢
cd /Users/nameOfUser/Desktop/someFolder/someSubFolder
然后我要在该目录中执行另一个命令。目前我这样做:
Process navigate = Runtime.getRuntime().exec("cd /Users/nameOfUser/Desktop/someFolder/someSubFolder");
Process doSomething = Runtime.getRuntime().exec("commandInThatDirectory");
哪个不起作用,它不会抛出异常,但第二个进程似乎不会发生在它之前指定的目录中。我是流程和运行时的新手所以请耐心等待:P。
他们是一种在同一个终端实例中重新执行命令的方法,或者至少是1个命令的格式,您可以在其中指定另一个命令的目录吗?我是linux用户,所以我不太清楚mac终端很抱歉。
答案 0 :(得分:1)
可以这样做。您可以通过在命令之间放置分号来运行任何命令。
public class Main {
public static void main(String[] args) throws IOException {
ProcessBuilder pb1 = new ProcessBuilder(
"bash",
"-c",
"cd /Users/nameOfUser/Desktop/someFolder/someSubFolder;commandInThatDirectory");
pb1.redirectErrorStream(true);
Process p = pb1.start();
}
}