远程执行批处理文件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");