2012-03-08 13 views
1

私はWindowsで書いているJavaプログラムからbashスクリプトを実行しようとしています。私はRuntimeオブジェクトを使ってプロセスを動作させようとしていましたが、プログラムは例外なくコンパイルされて実行されますが、単にディレクトリを作成する単純なテストスクリプトは実行されません。Javaからcygwinスクリプトを実行する方法

String cmmd[] = new String[3]; 
    cmmd[0] = "C:\\cygwin\\bin\\bash.exe"; 
    cmmd[1] = "cd C:/Users/pro-services/Desktop/projects/github/cygwin"; 
    cmmd[2] = "bash TEST.sh"; 

    Runtime rt= Runtime.getRuntime(); 
    Process proc = rt.exec(cmmd); 

は、これは基本的に、私はネットの周りのフォーラムで見つけたの異なるものが混在しているが、私は本当に何であるか理解していないと思います。ここでは

は、私がこれまで持っているものですProcessクラスで起こっています(私はRuntimeクラスについての基本的な考え方しか持っていません)。

また、私はこれを見つけた、と私はそれが行くべきと思ったところで自分のものを差し込ん:

ここ
Runtime.getRuntime().exec(new String[]{"C:\\cygwin\\bin\\bash.exe", 
                "-c", "c:\\cygwin\\bin\\run.exe -p /bin bash C:\\Users\\pro-services\\Desktop\\projects\\github\\cygwin\\TEST.sh"}, 
             new String[]{"PATH=/cygdrive/c/cygwin/bin"}); 

私は"-c""-p"文字列が何を表しているかわからないんだけど、私はちょうどそれと一緒に行きました。最初は、Runtime/Processオブジェクトを実行させたいシーケンシャルコマンドをプラグインするだけで、スクリプトを実行するための "スクリプト"を作成するように見えました。しかし、今はそれがもっとあるようです...

私はこの時点で暗闇の中で撮影しています。ドキュメントを理解しようとしましたが、私は迷っています。どんな助けもありがとう。おかげで)))

答えて

0

テストされていないが、私は思うだろう:

cmmd[0] = "C:/cygwin/bin/bash.exe"; 
cmmd[1] = "-c"; 
cmmd[2] = "cd /cygdrive/c/Users/pro-services/Desktop/projects/github/cygwin && bash TEST.sh"; 
+0

をしてからちょうど 'ランタイムRT = Runtime.getRuntime()を実行します。 \t \tプロセスproc = rt.exec(cmmd); '?不思議なことに私はまだ結果が得られません。ありがとう、これは良く見えます。 – blaughli

関連する問題