簡體   English   中英

Java:運行具有特定參數的可執行程序

[英]Java: run executable program whit particular parameters

我需要在Java中運行可執行程序(.exe)。 該程序具有兩種不同的操作模式:GUI和命令行。 從命令行啟動程序的語法如下: C:\\Users\\Ermanno\\Desktop\\ "programFolder"\\"program.exe" /stext output.txt

這樣,程序會將輸出結果存儲在文件“ output.txt”中。

我很累:

Process p = new ProcessBuilder("C:\\Users\\Ermanno\\Desktop\\programFolder\\program.exe" ,"/stext a.txt").start();

不創建輸出文件。

我也很討厭使用包含命令的文件批處理並將其運行到Java,但結果是相同的。

您需要在單個字符串中傳遞每個參數:

... program.exe", "/stext", "a.txt")...

還要確保您啟動了一個后台線程,該線程讀取子進程的輸出。 如果有問題,則子進程將在其標准輸出上顯示一條錯誤消息,如果您沒有積極閱讀,則該輸出將丟失。

為此,循環流p.getInputStream()p.getErrorStream()

后者特別重要,因為您說“我也厭倦了使用文件批處理”。 Java與批處理腳本沒有什么不同。 如果您無法批量運行該命令,那么該命令也無法在Java中運行。

使用JDK ProcessBuilder和Runtime.getRuntime()。exec時,我的經歷令人震驚。 然后,我轉到Apache commons-exec。 這是一個例子:

String line = "AcroRd32.exe /p /h " + file.getAbsolutePath();
CommandLine cmdLine = CommandLine.parse(line);
DefaultExecutor executor = new DefaultExecutor();
int exitValue = executor.execute(cmdLine);

我解決了使用文件浴。 該文件包含命令。

String [] _s = {"cmd.exe", "/c", "start", "file.bat"}; Process pr = Runtime.getRuntime().exec(_s);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM