ProcessBuilder adds extra quotes to command line

java, process, processbuilder, windows

Solution

As far as I understand, since ProcessBuilder has no idea how parameters are to be passed to the command, you'll need to pass the parameters separately to ProcessBuilder;

ArrayList<String> test = new ArrayList<String>();
test.add("\"C:\\Program Files\\USBDeview\\USBDeview.exe\"");
test.add("/enable");
test.add("\"My USB Device\"");

Problem

I need to build the following command using ProcessBuilder: ``` "C:\Program Files\USBDeview\USBDeview.exe" /enable "My USB Device" ``` I tried with the following code: ``` ArrayList<String> test = new ArrayList<String>(); test.add("\"C:\\Program Files\\USBDeview\\USBDeview.exe\""); test.add("/enable \"My USB Device\""); ProcessBuilder processBuilder = new ProcessBuilder(test); processBuilder.start().waitFor(); ``` However, this passes the following to the system (verified using Sysinternals Process Monitor) ``` "C:\Program Files\USBDeview\USBDeview.exe" "/enable "My USB Device"" ``` Note the quote before `/enable` and the two quotes after `Device`. I need to get rid of those extra quotes because they make the invocation fail. Does anyone know how to do this?

Original source