很抱歉,如果我再次重新打开同一个问题。我想运行两个命令
d:\ cygwin的\ BIN \测试
sh app.sh AK-RD 02.20 D:\ cygwin \ bin \ Test_files
以上是我想在同一命令提示符下运行的两个命令意味着我必须进入 D:\ cygwin \ bin \ Test 文件夹并在同一提示符下想要运行下一个命令< / p>
sh app.sh AK-RD 02.20 D:\ cygwin \ bin \ Test_files
命令看起来像,
命令: - D:\ cygwin \ bin \ Test&gt; 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
答案 0 :(得分:0)
你可以打电话
ProcessBuilder pb = new ProcessBuilder();
pd.directory(new File("D:\\cygwin\\bin\\Test"));
设置工作目录。
编辑:
您也可以尝试将命令拆分为参数
String cmd[] = new String[5];
cmd[0] = "sh";
cmd[1] = "app.sh";
cmd[2] = "AK-RD";
cmd[3] = "02.20";
cmd[4] = "D:\\cygwin\\bin\\Test_files";
答案 1 :(得分:0)
错误表示系统无法在路径中找到文件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