如何通过java执行cmd时捕获输入流?

时间:2015-01-23 04:25:10

标签: java cmd inputstream runas

我已经返回一个小的java代码来执行远程服务器上的SC命令,我正在使用LSRunas来提供管理员凭据。

   String[] command = new String [3];
   command[0] = 'cmd';
   command[1] = "/c";
   command[2] = "lsrunas /user:username /password:password /domain:domain /command:"sc \\servername queryex"  /runpath:c\\"


  ProcessBulder buider = new ProcessBuilder(command);
  Process p = buider.start();

   BufferedReader reader = new  BufferedReader(new(InputStreamReader(p.getInputStrem()));
   String line = reader.readLine();
    while(line != null) {
         System.out.println(line);
         line = reader.readLine(); 

    }

该程序运行正常,它在远程服务器上使用提供的凭据执行SC命令,但问题是它打开了一个新的cmd窗口来打印结果(使用RUNAS时的常见场景),但我想捕获结果并在我的java程序中读取它。有没有办法可以从新打开的cmd窗口中捕获结果。

1 个答案:

答案 0 :(得分:0)

String line = reader.readLine();
while(line != null) {
     System.out.println(line);
}

这将保持打印出相同的行。尝试:

String line;
while ((line = reader.readLine()) != null)
{
    System.out.println(line);
}