3

「バッチ」方式でWindowsコマンドを実行できるJavaアプリケーションを作成しようとしています。これが意味するのは、コマンド間で永続的であり、一度に1つだけ実行しているわけではないということです。

この例は次のとおりです。

@echo off
pushd C:\foldertobepushedto\
call batchfiletobecalled.bat
popd
pushd anotherdirectorytobepushedinto
call anotherbatchfiletobecalled.bat
popd

私はProcess process = Runtime.getRuntime().exec(CMD);、これらの各行を実行できるようにする方法を使用できるようにしたいと思いますが、各行が残りの行から完全に分離して実行されているわけではないように、永続性を維持します。

私は少し理にかなっていると思います。基本的に、バッチファイルの使用をすべてまとめて削除し、各行を要素としてベクトル/配列に格納し、そのように「バッチ」スタイルで実行するつもりです。

4

1 に答える 1

1

すみません。この問題を JScript で解決する方法を知っています。Java に同等のメソッドがあるかどうかは無視します。

次の場合、必要な効果を得ることができます。

パラメータなしで CMD.EXE ファイルを単独で実行しますが、WshShell.Exec メソッドを使用します。

var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("cmd");

WshShell.Exec メソッドは、プロセスの標準 I/O チャネルへのアクセスを提供します。

その後、実行したいコマンドをプロセスの STDIN チャネルに送信します。

oExec.Stdin.WriteLine("@echo off");
oExec.Stdin.WriteLine("pushd C:\foldertobepushedto\");
oExec.Stdin.WriteLine("call batchfiletobecalled.bat");
oExec.Stdin.WriteLine("popd");
oExec.Stdin.WriteLine("exit");

このように、すべてのコマンドは、あたかもバッチ ファイルに含まれているかのように完全に同等の方法で実行されます。唯一の違いは、 のような特定のコマンドが正しく実行されないことGOTOです。

于 2013-06-01T05:10:06.143 に答える