Проблема с командной строкой Java - PullRequest
0 голосов
/ 02 апреля 2011
public class CmdExec {

     public static void main(String argv[]) {
            try {
                Runtime rt = Runtime.getRuntime();
                StreamWrapper error, output;
                String TEMP = "/output:C:\\InstallList.txt product get name,version";     
                System.out.println(TEMP);
                CmdExec rte = new CmdExec();
                Process proc = rt.exec("wmic");
                proc = rt.exec(TEMP);

                error = rte.getStreamWrapper(proc.getErrorStream(), "ERROR");
                output = rte.getStreamWrapper(proc.getInputStream(), "OUTPUT");
                int exitVal = 0;
                error.start();
                output.start();
                error.join(3000);
                output.join(3000);
                exitVal = proc.waitFor();
                System.out.println("Output: "+output.message+"\nError: "+error.message);



     } catch (IOException e) {
         e.printStackTrace();
     } catch (InterruptedException e) {
         e.printStackTrace();
        }
}
}

получение исключения:

java.io.IOException: CreateProcess: \ output: C: \ InstallList.txt получить имя продукта, ошибка версии = 123 в java.lang.ProcessImpl.create (NativeМетод) в java.lang.ProcessImpl. (Неизвестный источник) в java.lang.ProcessImpl.start (неизвестный источник) в java.lang.ProcessBuilder.start (неизвестный источник) в java.lang.Runtime.exec (неизвестный источник)java.lang.Runtime.exec (неизвестный источник) в java.lang.Runtime.exec (неизвестный источник) в CmdExec.main (CmdExec.java:20)

1 Ответ

1 голос
/ 02 апреля 2011

Проблема в том, что вы пытаетесь выполнить "/output:C:\\InstallList.txt product get name,version" как команду, а это не работает. (Действительно, для меня это выглядит чепухой.)

Я ожидаю, что вы должны выполнить команду следующим образом:

    rt.exec("wmic /output:C:\\InstallList.txt product get name,version");
...