サーバー上にリモートにあるbatファイルを実行したい
\\testserver\someFolderName\test.bat。私はプロセスビルダーを使用していて、ディレクトリを変更したかったのです
procbuilder.directory(....),
が、成功しませんでした.
どんな助けでも大歓迎です。ありがとう
サーバー上にリモートにあるbatファイルを実行したい
\\testserver\someFolderName\test.bat。私はプロセスビルダーを使用していて、ディレクトリを変更したかったのです
procbuilder.directory(....),
が、成功しませんでした.
どんな助けでも大歓迎です。ありがとう
過去に、 PSExecを使って手早くやったことはありますが、
リモートコンピューター上のバッチにアクセスするには、必要な引数を使用してプログラムから独自のプロセスとして開始するだけです。
これは、現在使用している作業コードです。
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 の UNC パスを実行できるとは思いませんが、いずれにしても問題ありません。
.bat ファイルを実行するには、Windows コマンド シェルを実行し、それで .bat ファイルを実行する必要があります。コマンド シェルは UNC パスをサポートしていません。これを回避するには、次のようにコマンドを実行します。
cmd.exe /C "pushd \\testserver\someFolderName && test.bat && popd"
基本的に、リモート フォルダーを一時ドライブ (pushd \testserver\someFolderName) としてマウントし、test.bat を実行してから、一時ドライブ (popd) をアンマウントするようにコマンド プロンプトに指示します。