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

问题描述 投票:0回答:3

我只是试图在批处理文件夹中的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
java batch-file sas
3个回答
1
投票

我怀疑,您可以直接使用像\\server\folderas这样的UNC-Path工作目录。

尝试使用整个路径(例如\\server\folder\test.bat)作为您的命令,也许这是有效的。

如果没有,您将必须首先创建具有特定驱动器号的网络驱动器,并使用该驱动器号作为您的命令。


0
投票

由于它是Windows,您需要在完整路径中包含驱动器:

launcher.directory(new File("<your drive goes here>:\\xx.xx.xx.xx\\batch").getAbsoluteFile());

双斜杠(Java中的\\\\)在这里没有意义。


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);
}
© www.soinside.com 2019 - 2024. All rights reserved.