我想执行远程服务器上的bat文件
\\testserver\someFolderName\test.bat
。
我正在使用流程构建器,并希望使用
procbuilder.directory(....),
但不能成功。
感谢任何帮助。感谢
答案 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");