выполнить командный файл удаленно Java - PullRequest
4 голосов
/ 01 сентября 2010

Я хочу выполнить bat-файл, расположенный удаленно на сервере \\testserver\someFolderName\test.bat.Я использую компоновщик процессов и хотел изменить каталог с помощью procbuilder.directory(....), , но не смог.

Любая помощь приветствуется.Спасибо

Ответы [ 4 ]

2 голосов
/ 19 января 2011

Это рабочий код, который мы используем в настоящее время:

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();
}
2 голосов
/ 02 сентября 2010

В прошлом я делал это быстро и грязно с помощью PSExec

Просто запустите это из своей программы как своего собственного процесса с необходимыми аргументами, чтобы получить доступ к пакету наудаленный компьютер.

1 голос
/ 07 февраля 2017

это также работает в Java, как показано ниже:

Process p1 = Runtime.getRuntime().exec("cmd.exe /C pushd \\yourserver\yourfolderpath && yourexecutable.bat && popd");
1 голос
/ 02 сентября 2010

Я не думаю, что вы можете использовать UNC-пути для ProcessBuilder, но это не имеет значения в любом случае.

Чтобы запустить файл .bat, вам нужно запустить командную оболочку Windows и запустить этот файл .bat, а командная оболочка не поддерживает пути UNC ... Обойти это можно так: это:

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

По сути, вы предлагаете команде cmd подключить удаленную папку как временный диск (pushd \ testserver \ someFolderName), запустить test.bat, а затем отключить временный диск (popd).

...