我想执行远程位于服务器上的 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");