2010-09-01 288 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