1

同じ質問をもう一度開いている場合は申し訳ありません。2 つのコマンドを実行したい

  1. D:\cygwin\bin\Test

  2. sh app.sh AK-RD 02.20 D:\cygwin\bin\Test_files

上記は、同じコマンド プロンプトで実行したい 2 つのコマンドです。つまり、D:\cygwin\bin\Testフォルダー内に移動し、同じプロンプトで次のコマンドを実行する必要があります。

sh app.sh AK-RD 02.20 D:\cygwin\bin\Test_files

コマンドは次のようになります。

コマンド:- D:\cygwin\bin\Test>sh app.sh AK-RD 02.20 D:\cygwin\bin\Test_files

Java のプロセス ビルダーを使用してこれを行う方法。または、これを行う他の方法はありますか。

String cmd;   
   cmd = "sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files";
    ProcessBuilder probuilder = new ProcessBuilder( cmd );
    probuilder.directory(new File("D:\\cygwin\\bin\\Test"));
    Process process = probuilder.start();

probuilder.directoryコードを変更しても、これは役に立ちません。私は得ています

Cannot run program "'sh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files  CreateProcess error=2, The system cannot find the file specified
4

2 に答える 2

0

このエラーは、システムがパスでファイルを見つけられないことを意味しsh app.sh AK-RD 02.20 D:\\cygwin\\bin\\Test_files.exeます。

これはProcessBuilder、 が文字列全体 (バックスラッシュやスペースなどすべてを含む) をコマンド名として解釈することを意味します。これはあなたが望むものではありません。

コマンドを個々の単語に分割します。

ProcessBuilder pb = new ProcessBuilder( "sh", "app.sh", "AK-RD", "02.20", "D:\\cygwin\\bin\\Test_files" );

正しいディレクトリに使用pb.directory()します。CD

または、すべてを BAT/CMD スクリプトに入れ、それを実行しますProcessBuilder

于 2012-02-14T08:24:46.937 に答える
0

あなたは呼び出すことができます

ProcessBuilder pb = new ProcessBuilder();
pd.directory(new File("D:\\cygwin\\bin\\Test"));

作業ディレクトリを設定します。

編集:

コマンドを引数に分割して試すこともできます

String cmd[] = new String[5];
cmd[0] = "sh";
cmd[1] = "app.sh";
cmd[2] = "AK-RD";
cmd[3] = "02.20";
cmd[4] = "D:\\cygwin\\bin\\Test_files";
于 2012-02-14T07:21:31.260 に答える