我想执行远程位于服务器上的 bat 文件
\\testserver\someFolderName\test.bat。我正在使用流程构建器,并希望使用
procbuilder.directory(....),
但无法成功更改目录。
任何帮助表示赞赏。谢谢
我想执行远程位于服务器上的 bat 文件
\\testserver\someFolderName\test.bat。我正在使用流程构建器,并希望使用
procbuilder.directory(....),
但无法成功更改目录。
任何帮助表示赞赏。谢谢
在过去,我用PSExec快速而肮脏地完成了它
只需从您的程序作为自己的进程启动它,并使用所需的参数来访问远程计算机上的批处理。
我认为您不能为 ProcessBuilder 执行 UNC 路径,但无论如何这并不重要。
要运行 .bat 文件,您需要运行 windows 命令 shell 并让它执行 .bat 文件,并且命令 shell 不支持 UNC 路径......解决方法是像这样运行命令:
cmd.exe /C "pushd \\testserver\someFolderName && test.bat && popd"
本质上,您是在告诉 cmd 提示符将远程文件夹挂载为临时驱动器 (pushd\testserver\someFolderName),运行 test.bat,然后卸载临时驱动器 (popd)。
这是我们目前正在使用的工作代码:
try {
ProcessBuilder launcher = new ProcessBuilder();
Map<String, String> environment = launcher.environment();
launcher.redirectErrorStream(true);
launcher.directory(new File("\\\\<your remote computer name>\\TIERS\\DEV1\\RP\\VISUAL_BASIC\\"));
environment.put("name", "var");
launcher.command("your.exe");
Process p = launcher.start(); // And launch a new process
} catch (Exception e){
e.printStackTrace();
}
它也适用于java,如下所示:
Process p1 = Runtime.getRuntime().exec("cmd.exe /C pushd \\yourserver\yourfolderpath && yourexecutable.bat && popd");