Java 如何使用process builder运行两个不同的命令
抱歉,如果我再次打开相同的问题。我想运行两个命令Java 如何使用process builder运行两个不同的命令,java,command-prompt,processbuilder,Java,Command Prompt,Processbuilder,抱歉,如果我再次打开相同的问题。我想运行两个命令 D:\cygwin\bin\Test sh app.sh AK-RD 02.20 D:\cygwin\bin\Test\u文件 上面是我希望在同一命令提示符下运行的两个命令,这意味着我必须进入D:\cygwin\bin\Test文件夹,并在同一提示符下运行下一个命令 sh app.sh AK-RD 02.20 D:\cygwin\bin\Test\u文件 命令看起来像 命令:-D:\cygwin\bin\Test>sh app.sh AK-RD
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
你可以打电话
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";
该错误表示系统无法在路径中找到文件
sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test\u 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运行该脚本你能告诉它应该是什么样的吗?因为我得到了错误CreateProcess Error=2,系统找不到指定的文件。我在没有将命令拆分为参数时看到了一些奇怪的行为。拆分对你有用吗?还是没有爱?