【问题标题】:Cannot run 'cmd' command with parameters 'sc sdshow w32time'无法使用参数“sc sdshow w32time”运行“cmd”命令
【发布时间】:2013-04-03 03:39:26
【问题描述】:

我正在尝试在 Java 中运行一个外部进程,但我不知道为什么我的代码不起作用。它适用于任何其他“cmd”命令(例如 /c dir)。如果我用cmd /c dir 替换cmd sc sdshow w32time,它就可以工作。

这是我的代码:

public class services2 {
    public static void main(String args[]) {

        try {
            Process p = Runtime.getRuntime().exec("cmd sc sdshow w32time");
            p.waitFor();
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    p.getInputStream()));
            String line = reader.readLine();
            while (line != null) {
                System.out.println(line);
                line = reader.readLine();
            }
        } catch (IOException e1) {
        } catch (InterruptedException e2) {
        }

        System.out.println("Done");
    }
}

有什么想法吗?

【问题讨论】:

  • 您运行此代码的任何帐户是否有权运行该命令?
  • 我不知道“cmd sc sdshow w32time”实际上做了什么,但我知道如果你从字符串中删除“cmd”,你会得到很好的输出。
  • 好吧,在 Windows 中运行 cmd 会产生一个新的“shell”,afaik。所以命令字符串的下一部分应该是一个可执行文件。您可能想要 1) 提供可执行文件 (sc) 的完整路径 2) 拆分您的命令字符串(例如 Runtime.getRuntime().exec("cmd", "drive:\path\to\sc", "sdshow", "w32time");)。
  • 为什么你在你的sc 命令中省略了/c,而将它应用到你的dir 命令中?

标签: java cmd exec


【解决方案1】:

您的问题似乎是 sc 不是 cmd 的参数。
你需要的是:

sc sdshow w32time

【讨论】:

    猜你喜欢
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多