4

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

任何帮助表示赞赏。谢谢

4

4 回答 4

2

在过去,我用PSExec快速而肮脏地完成了它

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

于 2010-09-01T20:01:20.147 回答
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)。

于 2010-09-01T20:01:57.263 回答
1

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

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();
}
于 2011-01-19T20:52:35.647 回答
1

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

Process p1 = Runtime.getRuntime().exec("cmd.exe /C pushd \\yourserver\yourfolderpath && yourexecutable.bat && popd");
于 2017-02-07T04:40:43.700 回答