【问题标题】:java executing shell commandsjava执行shell命令
【发布时间】:2023-10-14 21:27:01
【问题描述】:

我正在编写一个需要执行 shell 命令的 java 程序,所以我编写了一个函数,它将命令作为字符串执行(即:“mkdir ~/Folder1”)并使用 shell 执行该命令。这是函数:

 private static void shell(String cmd)
 {
   try
   {
    Runtime run = Runtime.getRuntime();
    Process pr = run.exec(cmd);
    pr.waitFor();
    BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream()));
    String line = "";

    while ((line = buf.readLine()) != null) {
     System.err.println(line); // show any errors returned by the command executed on the error console

    }

   } catch (Exception ee) {}

}

由于某种奇怪的原因,这个函数没有执行任何命令。我做错了吗?执行shell命令似乎是一件简单的事情,但它不起作用。

【问题讨论】:

  • 在您的 catch 块中,执行以下操作:ee.printStackTrace(); 并发布错误
  • 我看到的,是一个10声望,1金1银的家伙……:P
  • 为什么会有不同?

标签: java shell command execute


【解决方案1】:

我认为您将命令字符串作为一些 mkdir 命令传递,例如, “mkdir C:\some\folder\path”。

mkdir 不是 Windows 路径中的一些二进制文件,它是命令行的参数。 使用命令字符串为“cmd.exe /c mkdir C:\some\folder\path”

那么它应该可以正常工作。

【讨论】:

  • 我使用的是 mac(基于 unix 的终端),我熟悉直接在终端中使用 mkdir 命令。我认为您提供的字符串不会做任何事情。我正在使用不同的代码,但它仍然无法正常工作:(哦,我不能发布它,有趣)