2012-02-14 28 views
1

对不起,如果我再次重新打开相同的问题。我想运行两个命令如何使用进程生成器运行两个不同的命令

  1. d:\ cygwin的\斌\测试

  2. SH app.sh AK-RD 02.20 d:\ cygwin的\斌\ Test_files

以上是我想要在同一个命令提示符下运行的两个命令意味着我必须进入D:\ cygwin \ bin \ Test文件夹和在同一提示符下运行下一个命令

SH app.sh AK-RD 02.20 d:\ cygwin的\斌\ Test_files

的命令看起来像,

命令: - d:\ cygwin的\斌\测试> 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

错误意味着系统无法找到路径的文件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

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"; 
+0

u能告诉究竟= 2,系统找不到指定的文件 – 2012-02-14 07:57:45

+0

我应该是因为我得到错误CreateProcess的错误当没有将命令分成参数时,我们看到了一些奇怪的行为。分裂为你工作?还没有爱? – ughzan 2012-02-14 08:17:28

相关问题