抱歉,如果我再次重新打开相同的问题。我想运行两个命令
D:\cygwin\bin\Test
sh app.sh AK-RD 02.20 D:\cygwin\bin\Test_files
上面是我想在同一个命令提示符下运行的两个命令,这意味着我必须进入 D:\cygwin\bin\Test 文件夹,并在同一提示符下想要运行下一个命令
sh app.sh AK-RD 02.20 D:\cygwin\bin\Test_files
该命令看起来像,
命令:- D:\cygwin\bin\Test>sh app.sh AK-RD 02.20 D:\cygwin\bin\Test_files
如何使用 java 中的 process Builder 来执行此操作。或者有没有其他方法可以做到这一点。
String cmd;
cmd = "sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files";
ProcessBuilder probuilder = new ProcessBuilder( cmd );
probuilder.directory(new File("D:\\cygwin\\bin\\Test"));
Process process = probuilder.start();
即使我更改代码中的probuilder.directory
,这对我没有帮助。我正在得到
Cannot run program "'sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files CreateProcess error=2, The system cannot find the file specified
最佳答案
该错误表示系统在路径中找不到文件sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files.exe
。
这意味着 ProcessBuilder 将整个字符串(包括反斜杠和空格等)解释为命令名称。这不是你想要的。
将命令拆分为单独的单词:
ProcessBuilder pb = new ProcessBuilder( "sh", "app.sh", "AK-RD", "02.20", "D:\\cygwin\\bin\\Test_files" );
并使用pb.directory()
将CD
放入正确的目录。
或者,将所有内容放入 BAT/CMD 脚本中并使用 ProcessBuilder
运行该脚本
关于java - 如何使用进程生成器运行两个不同的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9272832/