2016-03-24 1 views
1

基本的には、ターミナルに入力するだけの方法で、Javaプログラムで実行する必要がある2つのコマンドがあります。Javaターミナルでバックコマンドを実行します。Javaランタイム

ので

cd /Users/nameOfUser/Desktop/someFolder/someSubFolder 

と私はそのディレクトリ内で実行したいその後、別のコマンドのように。現在、私はこれをやっている:

動作しません
Process navigate = Runtime.getRuntime().exec("cd /Users/nameOfUser/Desktop/someFolder/someSubFolder"); 
Process doSomething = Runtime.getRuntime().exec("commandInThatDirectory"); 

、それが例外をスローしませんが、第二の方法は、その前に指定されたディレクトリに場所を取るしていないようです。私はプロセスやランタイムには新しいので、私に同行してください:P。

端末の同じインスタンス内でコマンドを連続して実行する方法か、または1つのコマンドのフォーマットで、別のコマンドを実行するディレクトリを指定することはできますか?私はLinuxのユーザーですので、私は非常によく申し訳ありませんが、Mac端末を知らない。

答えて

1

このようにすることができます。コマンド間にセミコロンを置いて、任意のコマンドを実行することができます。

public class Main { 
public static void main(String[] args) throws IOException { 

     ProcessBuilder pb1 = new ProcessBuilder(
       "bash", 
       "-c", 
       "cd /Users/nameOfUser/Desktop/someFolder/someSubFolder;commandInThatDirectory"); 
     pb1.redirectErrorStream(true); 
     Process p = pb1.start(); 
    } 
} 
+0

「-c」とは何ですか?私はbashがターミナルをオープン/使用するように指示していると理解していますが、その部分は何をしていますか? –

関連する問題