Java 远程执行批处理文件

Java 远程执行批处理文件,java,processbuilder,Java,Processbuilder,我想在服务器上远程执行一个bat文件 \\testserver\someFolderName\test.bat。 我正在使用process builder,希望使用 procbuilder.directory(..), 但未能成功 感谢您的帮助。谢谢过去我做得又快又脏 只需从您的程序开始,将其作为自己的进程,并使用所需的参数来访问远程计算机上的批处理。我认为您不能为ProcessBuilder执行UNC路径,但在任何情况下都不重要 要运行.bat文件,您需要运行windows命令shell并让其

我想在服务器上远程执行一个bat文件
\\testserver\someFolderName\test.bat
。 我正在使用process builder,希望使用
procbuilder.directory(..),
但未能成功


感谢您的帮助。谢谢

过去我做得又快又脏


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

我认为您不能为ProcessBuilder执行UNC路径,但在任何情况下都不重要

要运行.bat文件,您需要运行windows命令shell并让其执行.bat文件,而命令shell不支持UNC路径。。。解决方法是按如下方式运行命令:

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

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

这是我们当前使用的工作代码:

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启动器=新的ProcessBuilder();
Map environment=launcher.environment();
launcher.redirectErrorStream(true);
目录(新文件(“\TIERS\\DEV1\\RP\\VISUAL\u BASIC\”);
环境。put(“名称”、“风险值”);
命令(“your.exe”);
进程p=launcher.start();//并启动一个新进程
}捕获(例外e){
e、 printStackTrace();
}

它也可以在java中工作,如下所示:

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

代码如下:String[]command={“CMD”、“/C”、“pushd\\\\testserver\\someFolderName&&test.bat&&popd”};ProcessBuilder probuilder=新建ProcessBuilder(命令);String[]command={“cmd.exe”、“/C”、“pushd\\\\testserver\\someFolderName&&test.bat&&popd”};ProcessBuilder probuilder=新建ProcessBuilder(命令);我试过了,但没有成功。你的问题(至少对我来说)不清楚。我以为你想在本地运行远程定位的.bat文件。Andrew的答案会更相关。系统找不到指定的文件是我的结果。在资源管理器中使用相同的路径和可执行文件名执行确实有效,因此路径和可执行文件名是正确的。您是否找到解决此问题的方法?这对我来说是通过Java实现的。但我必须避开url。-\\\\yourserver\\yourfolderpath。谢谢