我正在使用Java ProcessBuilder在Windows上使用特定程序打開文件。如何將上下文菜單參數傳遞給Java ProcessBuilder
本身做工精細,用下面的代碼:
ProcessBuilder p = new ProcessBuilder();
p.command("C:\\Program Files (x86)\\...\\program.exe", file.getAbsolutePath());
我想要做的就是調用從程序的文件上下文菜單項,看起來像這樣的功能:
"C:\Program Files (x86)\...\program.exe" /Enqueue "%1"
如何將這些參數傳遞給流程生成器?
我已經嘗試了以下,其中沒有工作:
p.command("C:\\Program Files (x86)\\...\\program.exe","/Enqueue","%1",next.getAbsolutePath());
p.command("C:\\Program Files (x86)\\...\\program.exe","Enqueue","%1",next.getAbsolutePath());
p.command("C:\\Program Files (x86)\\...\\program.exe","Enqueue","\"%1\"",next.getAbsolutePath());
p.command("C:\\Program Files (x86)\\...\\program.exe","/Enqueue","\"%1\"",next.getAbsolutePath());
「不工作」,在這種情況下,這意味着該程序啓動,但沒有任何反應(該文件甚至沒有打開)。
如果我按照以下順序切換它們(程序,文件,參數),那麼文件可以正確打開,但其他參數不起作用,就好像它們甚至不在那裏一樣。
將這些參數轉換爲ProcessBuilder命令的正確方法是什麼?
你需要對'%1'的值進行'字符串'替換以達到你想傳遞的值。你還需要將'String'分解爲一個數組,因此每個命令/參數都是一個單獨的元素。 – MadProgrammer
好吧,所以程序是一個帶有隊列的媒體播放器,所以我假定%1應該是是文件名。我現在試過這個版本:p.command(「C:\\ Program Files(x86)\\ ... \\ program.exe」,\t「Enqueue」,next.getAbsolutePath());但它仍然只打開文件,沒有別的... – user3265879