1

抱歉,如果我再次重新打开相同的问题。我想运行两个命令

  1. D:\cygwin\bin\测试

  2. 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
4

2 回答 2

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";
于 2012-02-14T07:21:31.260 回答
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()toCD进入正确的目录。

或者,将所有内容放入 BAT/CMD 脚本并使用ProcessBuilder

于 2012-02-14T08:24:46.937 回答