2017-01-10 2 views
1

Я пытался распечатать версию chrome с помощью построителя процессов, это отлично работает с командной строкой, когда я выполнил команду wmic непосредственно в командной строке Windows, т работа с процессом строительобработчик процесса не печатает вывод консоли с помощью wmic

String path= "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"; 
    String[] cmd = { "CMD", "/C", "wmic datafile where name="+path+" get Version /value" }; 
    ProcessBuilder probuilder = new ProcessBuilder(cmd); 
    Thread.sleep(5000); 
    Process p = probuilder.start(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
    String readline; 
    int i = 0; 
    while ((readline = reader.readLine()) != null) { 
     System.out.println(++i + " " + readline); 
    } 
} 

Ожидаемые

Он должен напечатать следующий вывод: Version = 55.0.2883.87

Предложите какое-то решение

ответ

1

попробовать с

String[] cmd = { "CMD", "/C", "wmic datafile where \"name='"+path+"'\" get Version /value" }; 

вам необходим путь цитируемый как:

"name='C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'" 

Я думаю, даже вы можете выполнить непосредственно wmic без ЦМД.

редактировать весь код пропущено (двойные слеши также необходимы в Wmic пути):

Runtime rt = Runtime.getRuntime(); 
String path= "C:\\\\Program Files (x86)\\\\Google\\\\Chrome\\\\Application\\\\chrome.exe"; 



Process p2=Runtime.getRuntime().exec("cmd /C wmic datafile where 'name=\""+path+"\"' get Version "); 


BufferedReader reader = new BufferedReader(new InputStreamReader(p2.getInputStream())); 
BufferedReader stdError = new BufferedReader(new 
     InputStreamReader(p2.getErrorStream())); 

String readline; 
System.out.println("Output:\n"); 
while ((readline = reader.readLine()) != null) { 
    System.out.println(readline); 
} 

System.out.println("Errors:\n"); 
while ((readline = stdError.readLine()) != null) { 
    System.err.println(readline); 
} 
+0

Пытался это .. не повезло. он не печатал. у вас есть какое-либо другое решение, оно дало пустой вывод – user2459816

+0

@ user2459816 - вам также нужны двойные косые черты для wmic-пути. На данный момент вы используете одиночную косую черту. Проверьте мое обновление. – npocmaka

+0

спасибо, что это сработало – user2459816

Смежные вопросы