java - 如何使用进程生成器运行两个不同的命令

标签 java command-prompt processbuilder

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

  1. D:\cygwin\bin\Test

  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

最佳答案

该错误表示系统在路径中找不到文件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/

相关文章:

java - 如何使用 Java 代码打开命令提示符、更改目录并执行命令 (Windows)

java - Java耗时过长如何成功销毁进程?

java - Backbone.js 集合不更新

java - 如果在 eclipse 中打开依赖项目,则 Web 项目不会在服务器上运行

java - 使用命令行参数来完成河内程序?

java - Process.destroy() 不会杀死 Process 的子进程

java - 空字符串解析ntpq命令结果

java - 我无法暂停并继续 CountDownTimer

java - 如何将微调器下拉值转换为整数

node.js - 有关为node.js安装angular cli的问题