我只是试图在批处理文件夹中的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
答案 0 :(得分:1)
我怀疑,您可以直接使用像\\server\folder
这样的UNC路径作为工作目录。
尝试使用整个路径(例如\\server\folder\test.bat
)作为您的命令,也许这样可行。
如果没有,您必须先创建一个带有特定驱动器号的网络驱动器,并使用该驱动器号作为您的命令。
答案 1 :(得分:0)
由于它是Windows,因此您需要将驱动器包含在完整路径中:
launcher.directory(new File("<your drive goes here>:\\xx.xx.xx.xx\\batch").getAbsoluteFile());
这里的双斜杠(\\\\
)没有意义。
答案 2 :(得分:0)
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);
}