2014-01-08 105 views
1

我正尝试使用以下命令。NETSH不产生输出

Runtime.getRuntime().exec("netsh -c interface dump > c:\\location1.txt"); 

但它没有输出。

我知道我们必须分开命令和它的论点,我尝试过但仍然失败。

我用下面的方法。

Runtime.getRuntime().exec("netsh",new String[] "-c", "interface", "dump >", "c:\\location1.txt"); 

但仍然没有输出。

如果有人知道如何使用运行时使用全部或部分NETSH命令,那么这将非常有帮助。

回答

1

您可以尝试使用的ProcessBuilder

ProcessBuilder pb=new ProcessBuilder(command); 
pb.redirectErrorStream(true); 
Process process=pb.start(); 
BufferedReader inStreamReader = new BufferedReader(
    new InputStreamReader(process.getInputStream())); 

while(inStreamReader.readLine() != null){ 
    //do something with commandline output. 
} 
+0

它抛出异常,这里是“异常线程‘main’产生java.io.IOException:不能运行程序‘的netsh -c接口转储> C:\ local.txt’ :CreateProcess error = 2,系统找不到指定的文件 \t at java.lang.ProcessBuilder.start(Unknown Source) \t at com.kamani.proxyloader.ExecuteCommand.main(ExecuteCommand.java:16) 引起: java.io.IOException:CreateProcess error = 2,系统找不到指定的文件“ –

+2

应该像这样'new ProcessBuilder(”netsh.exe“,”-c“,”interface“,”dump“);'No '> C:\ local.txt'。 – PeterMmm

+1

+1 @PeterMmm。请尝试他的建议。 –

1

这是netsh在Windows?尝试specifi完整路径可执行文件:

Runtime.getRuntime().exec("C:/full/path/netsh.exe",... 
+0

它仍然没有工作。所有其他命令的作品,但我不知道为什么上述命令不起作用。 –

+0

您无法重定向输出。重定向'>'是shell命令的一部分。您可以像@Arew所说的那样捕获'netsh'output,或者用命令行启动'cmd.exe'。看看这里:http://stackoverflow.com/questions/5928225/how-to-make-pipes-work-with-runtime-exec – PeterMmm

+0

你是对的,但我仍然无法理解你能告诉我如何解决这个问题? –