我需要使用ProcessBuilder生成以下命令:

"C:\Program Files\USBDeview\USBDeview.exe" /enable "My USB Device"

我尝试使用以下代码:
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();

但是,这会将以下内容传递给系统(使用Sysinternals流程监视器进行验证)
"C:\Program Files\USBDeview\USBDeview.exe" "/enable "My USB Device""

注意/enable前的引号和Device后的两个引号。我需要去掉那些额外的引号,因为它们会使调用失败。有人知道怎么做吗?

最佳答案

据我所知,由于ProcessBuilder不知道如何将参数传递给命令,因此需要将参数分别传递给ProcessBuilder;

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

10-04 12:26