远程执行批处理文件java
我想在服务器\\testserver\someFolderName\test.bat
上远程执行一个bat文件。 我正在使用流程构建器,并希望使用procbuilder.directory(....),
来链接目录procbuilder.directory(....),
但无法成功。
任何帮助表示赞赏。 谢谢
在过去,我用PSExec快速完成了它
只需从程序中将其作为自己的进程启动,并使用所需的参数来访问远程计算机上的批处理。
这是我们目前正在使用的工作代码:
try { ProcessBuilder launcher = new ProcessBuilder(); Map environment = launcher.environment(); launcher.redirectErrorStream(true); launcher.directory(new File("\\\\\\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(); }
我不认为你可以为ProcessBuilder做UNC路径,但在任何情况下都无关紧要。
要运行.bat文件,您需要运行一个Windows命令shell并执行.bat文件,并且命令shell不支持UNC路径…解决方法是运行您的命令,如下所示:
cmd.exe /C "pushd \\testserver\someFolderName && test.bat && popd"
基本上,您告诉cmd提示将远程文件夹挂载为临时驱动器(pushd \ testserver \ someFolderName),运行test.bat然后卸载临时驱动器(popd)。
它也适用于java,如下所示:
Process p1 = Runtime.getRuntime().exec("cmd.exe /C pushd \\yourserver\yourfolderpath && yourexecutable.bat && popd");