我只是试图在共享的批处理文件夹中的c驱动器中存在的服务器上运行批处理文件

时间:2015-10-05 07:33:50

标签: java batch-file sas

我只是试图在批处理文件夹中的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

3 个答案:

答案 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);
}