我只是试图在批处理文件夹中的c驱动器中存在的服务器上运行批处理文件,但是我收到错误:
java.io.IOException: Cannot run program "sas.bat" (in directory "\\xx.xx.xx.xx\batch"): CreateProcess error=2, The system cannot find the file specified
java代码:
ProcessBuilder launcher = new ProcessBuilder();
launcher.redirectErrorStream(true);
launcher.directory(new File("\\\\xx.xx.xx.xx\\batch").getAbsoluteFile());
launcher.command("sas.bat");
Process p= launcher.start();
sas.bat:
"D:\sas home\SASFoundation\9.3\sas.exe" -SYSIN c:\codeexcel.sas
cmd /k
我怀疑,您可以直接使用像\\server\folder
as这样的UNC-Path工作目录。
尝试使用整个路径(例如\\server\folder\test.bat
)作为您的命令,也许这是有效的。
如果没有,您将必须首先创建具有特定驱动器号的网络驱动器,并使用该驱动器号作为您的命令。
由于它是Windows,您需要在完整路径中包含驱动器:
launcher.directory(new File("<your drive goes here>:\\xx.xx.xx.xx\\batch").getAbsoluteFile());
双斜杠(Java中的\\\\
)在这里没有意义。
ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c",
"F:\\Softwares\\PsTool\\PsExec.exe \\\\xx.xx.xx.xx -u Administrator -p yyyy \"c:\\batch\\createFolder.bat\"");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) {
break;
}
System.out.println(line);
}