【问题标题】:opening cmd prompt and execute command java打开cmd提示符并执行命令java
【发布时间】:2010-07-08 19:26:22
【问题描述】:

我能够使用以下代码从我的 Java 程序打开命令提示符:

String cmd = "C:\\WINNT\\system32\\cmd.exe /c start";


    try {
        @SuppressWarnings("unused")
        Process ps = Runtime.getRuntime().exec(cmd);
    } catch (IOException e) {
        e.printStackTrace();
    }

上面的代码打开了命令提示符。

如果我想在这个打开的命令提示符下执行一些命令,我​​该怎么办?

任何帮助表示赞赏。

【问题讨论】:

  • 你不应该使用exec()的单一字符串形式,你应该总是使用exec(String[] cmdarray)的形式,否则当exec“神秘地”失败时你最终会感到惊讶。 .exec() 不是 命令解析器,并且引用/转义内容(如文件名中的空格)不起作用。 String[] cmd = { "C:\\WINNT\\system32\\cmd.exe", "/c", "start" };

标签: java cmd prompt


【解决方案1】:

我认为你的方向是正确的。要执行一些命令或多个命令,请重复cmd /k [command],如下所示:-

// write dir output to file
Runtime.getRuntime().exec(new String[] {
        "cmd",
        "/k",
        "dir",
        ">",
        "c:\\output.txt"
});

// create test-dir folder in c:\
Runtime.getRuntime().exec(new String[] {
        "cmd",
        "/k",
        "mkdir",
        "c:\\test-dir"
});

【讨论】:

  • 感谢 limc,但我不想看到在打开的控制台中执行的其余命令。这可能吗.. 如果我们使用 ProcessBuilder 会怎样
【解决方案2】:

我知道cmd /k [some other command]会在命令提示符下运行该命令,但它只运行一个,所以这是一个有限的解决方案

【讨论】:

  • 我不明白。你的意思是打开的cmd提示一旦打开就没有用了。我应该尝试直接执行命令而不打开它吗?
  • 如果你想让程序在命令提示符下执行单个命令,那么你使用cmd /k。如果您想以用户身份使用命令提示符,您应该能够像往常一样单击进入它并键入命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
相关资源
最近更新 更多