我正在尝试从我的java程序运行Powershell脚本(PS1)文件。
这是我的Java代码:
for ( ; ; ) {
ProcessBuilder pb = new ProcessBuilder("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -Command \"C:\\Java_Scratch2\\University.PS1");
Process p = pb.start();
p.waitFor();
}
但是当我尝试执行时,我在Windows CMD中收到以下错误:
C:\Java_Scratch2>java ParentClassBatchRunner
java.io.IOException: Cannot run program "C:\Windows\System32\WindowsPowerShell\v
1.0\powershell.exe -Command "C:\Java_Scratch2\University.PS1": CreateProcess err
or=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at ParentClassBatchRunner.main(ParentClassBatchRunner.java:16)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find th
e file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 2 more
我尝试更改它的格式,将~
换成空格等等。但仍然卡住了。感谢
答案 0 :(得分:2)
你错误地引用了一个论点。
但无论如何,你不应该使用这种形式的ProcessBuilder。像这样调用它:
final ProcessBuilder pb = new ProcessBuilder(
"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"-Command",
"C:\\Java_Scratch2\\University.PS1"
);
final Process p = pb.start();
// and don't forget to check the result of p.waitFor()