远程执行批处理文件java

时间:2010-09-01 18:57:35

标签: java processbuilder

我想执行远程服务器上的bat文件 \\testserver\someFolderName\test.bat。 我正在使用流程构建器,并希望使用 procbuilder.directory(....), 但不能成功。

感谢任何帮助。感谢

4 个答案:

答案 0 :(得分:2)

过去我用PSExec

快速完成了这项工作

从您的程序中启动它作为自己的进程,并使用所需的参数来访问远程计算机上的批处理。

答案 1 :(得分:2)

这是我们目前正在使用的工作代码:

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();
}

答案 2 :(得分:1)

我认为你不能为ProcessBuilder做UNC路径,但在任何情况下它都无关紧要。

要运行.bat文件,您需要运行一个Windows命令shell并执行.bat文件,并且命令shell不支持UNC路径...解决方法是运行您的命令,如这样:

cmd.exe /C "pushd \\testserver\someFolderName && test.bat && popd"

基本上,您告诉cmd提示将远程文件夹挂载为临时驱动器(pushd \ testserver \ someFolderName),运行test.bat然后卸载临时驱动器(popd)。

答案 3 :(得分:1)

它也适用于java,如下所示:

Process p1 = Runtime.getRuntime().exec("cmd.exe /C pushd \\yourserver\yourfolderpath && yourexecutable.bat && popd");
相关问题