2010-09-01 165 views
4

我想执行远程位于服务器上的bat文件 \\testserver\someFolderName\test.bat。 我正在使用进程生成器,并且想用 procbuilder.directory(....), chad目录,但无法成功。远程执行批处理文件java

任何帮助表示赞赏。由于

+0

你是否找到了解决这个问题呢? – Sandman 2014-03-21 15:41:31

回答

2

在过去,我已经做到了快速和肮脏与PSExec

刚开始,从你的程序作为自己与所需参数的过程来访问该批次在远程计算机上。

1

我不认为你可以为ProcessBuilder做UNC路径,但在任何情况下都没有关系。

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

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

从本质上讲,你告诉命令提示符挂载远程文件夹作为临时驱动器(PUSHD \ TESTSERVER \ someFolderName),运行test.bat的然后卸载临时驱动器(POPD)。

+2

是这样的代码: String [] command = {“CMD”,“/ C”,“pushd \\\\ testserver \\ someFolderName && test.bat && popd”}; \t \t ProcessBuilder probuilder = new ProcessBuilder(command); – user234194 2010-09-01 20:30:39

+0

String [] command = {“cmd.exe”,“/ C”,“pushd \\\\ testserver \\ someFolderName && test.bat && popd”}; \t \t \t \t ProcessBuilder probuilder = new ProcessBuilder(command); 我试过这个,但无法使它工作。 – user234194 2010-09-02 14:34:30

+0

这不起作用。它在相同的本地主机上执行。 – user234194 2010-09-02 15:03:35

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

系统找不到指定的文件是我的结果。 在资源管理器中使用相同的路径和可执行文件名执行不起作用,所以路径和可执行文件名是正确的。 – Steven 2014-01-20 16:11:24

1

它也可以在Java中如下:

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

这通过Java为我工作。但是我必须逃避url.- \\\\你服务器\\你的文件夹路径。谢谢! – 2017-02-14 19:56:31