当前位置: 首页 > 知识库问答 >
问题:

在运行时有空格。getRuntime()。带2个可执行文件的exec

傅宏恺
2023-03-14

我有一个命令,我需要在java中按照以下方式运行:

    C:\path\that has\spaces\plink -arg1 foo -arg2 bar "path/on/remote/machine/iperf -arg3 hello -arg4 world"

当路径没有空格时,这个命令可以正常工作,但是当我有空格时,我似乎无法让它工作。我尝试了以下方法,运行Java1.7

String[] a = "C:\path\that has\spaces\plink", "-arg1 foo", "-arg2 bar", "path/on/remote/machine/iperf -arg3 hello -arg4 world"
Runtime.getRuntime().exec(a);

以及;以及

String[] a = "C:\path\that has\spaces\plink", "-arg1 foo", "-arg2 bar", "path/on/remote/machine/iperf", "-arg3 hello", "-arg4 world"
Runtime.getRuntime().exec(a);

但两人似乎都没有采取任何行动。有没有想过我做错了什么??

共有1个答案

汪博艺
2023-03-14

传递给命令的每个参数都应该是一个单独的字符串元素。

所以您的命令数组应该更像。。。

String[] a = new String[] {
    "C:\path\that has\spaces\plink",
    "-arg1",
    "foo", 
    "-arg2",
    "bar",
    "path/on/remote/machine/iperf -arg3 hello -arg4 world"};

每个元素现在将作为单个元素显示在programs变量中

我还非常鼓励您改用ProcessBuilder,因为它更容易配置并且不需要您将一些命令包装在"\"...\""

 类似资料:
  • 问题内容: 我有一条命令需要在Java中按照以下方式运行: 当路径没有空格时,此命令可以正常工作,但是当我有空格时,似乎无法正常工作。我尝试了以下事情,运行Java 1.7 以及 但是似乎两者都没有做任何事情。关于我在做什么错的任何想法吗? 问题答案: 传递给命令的每个参数都应该是一个单独的String元素。 所以你的命令数组应该看起来更像是… 现在,每个元素将在程序变量中显示为单独的元素 我也极

  • 我正在尝试将我制作的两个简单程序合并为一个。罐子我两个都打包了。将jar装入新的jar并在运行时使用。getRuntime()。exec方法来执行它们。 代码: 问题是只执行proj1.jar,proj2.jar不运行。我是新来的java,不知道为什么会这样。我该怎么解决这个问题?我想要两个文件都被执行。

  • 我正在尝试并行运行两个exe程序。我想启动它们,等待它们完成后再继续。以下是一个例子: 第一个进程睡眠5秒,第二个进程睡眠10秒。我希望看到进程启动的两条消息和“等待任务”消息。10秒后,请参见“过程完成”。但是,我立即看到“Procs complete”。 任务管理器显示正在运行的进程,同时显示“进程完成”。 那么,我如何从一个程序中启动两个独立的可执行程序,并行运行它们,然后等待它们完成,然后

  • 我正在尝试从Java代码运行另一个程序: 我没有文件。在/home/user/myoldfiles/中创建的shp使用BufferedReader获得的命令输出如下所示: 当我在终端(Ubuntu)中运行下一个命令时 它能打印 并成功创建了。shp文件。我在Java代码中做错了什么?

  • 终端中使用lldb运行可执行文件 进入lldb环境, 在终端内输入lldb回车 lldb 使用file命令, 将可执行文件包装成一个target (lldb) file test Current executable set to '/Users/shenyj/Documents/CodeForTest/staticOCLib/test' (x86_64). 运行可执行文件, 在刚刚的l

  • 问题内容: 我是Java的新手,因此尝试将我的项目之一从C转换为Java,以便将其与另一个Java程序结合在一起。使用Runtime.exec()时,很难获得正确的结果。我有以下程序段,而Java将忽略以处理给定的命令。 这里的问题是文件名“ metabolic waste.txt”。没有空间时,相同的命令起作用。我知道我必须将转义字符用于空间,并且做到了。我正在研究Ubuntu btw。 我也尝