2017-01-10 104 views
1

我試圖使用進程生成器來打印chrome的版本,當我直接在Windows命令提示符下執行wmic命令時,此命令正常工作,與進程生成進程生成器不使用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); 
    } 
} 

預期噸工作

它具有打印以下輸出:版本= 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'" 

我想即使你可以不CMD直接執行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

相關問題