繁体   English   中英

远程执行批处理文件java

[英]execute batch file remotely java

我想在服务器\\\\testserver\\someFolderName\\test.bat上远程执行一个bat文件。 我正在使用流程构建器,并希望使用procbuilder.directory(....),来链接目录procbuilder.directory(....),但无法成功。

任何帮助表示赞赏。 谢谢

在过去,我用PSExec做得很快,很脏

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

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

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

我不认为你可以为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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM