【发布时间】: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命令中?