2016-10-10 13 views
-2

例:ディレクトリをC:/ temp/hacking/passsword に変更して、次のようなコマンドを実行します。java Helloworld arg1 arg2 どうすればjavaでこれを行うことができますか?そのディレクトリでディレクトリを変更してコマンドを実行するにはどうすればよいですか?

+0

「ディレクトリを変更する」とはどういう意味ですか?あなたのプログラムは "現在のディレクトリ"を追跡していますか? –

+0

コマンドプロンプトに「Help」と入力します。それぞれのコマンドに対して、 'help '( '' help dir')や ' /?'(例えば 'dir /?')と入力してください。 'cd C:\ temp \ hacking \ passsword'、次に' c:\ FolderJavaInstalledIn \ java Helloworld Arg1 arg2'を実行します。 '\'はWindowsのパス区切り文字です。 –

+0

Javaプログラムはシェルではありません。 "現在のディレクトリ"( 'user.dir'システムプロパティの値)がある間に、' Runtime'または 'ProcessBuilder'を使って起動する各プロセスに作業ディレクトリを提供します。 –

答えて

2

次回は質問をより明確にしてください。

Process pr = builder.start(); 
    String[] commands = {"commands"}; 
    ProcessBuilder builder = new ProcessBuilder(commands); 
    builder.directory(new File(/one/two/dir)); 
    pr = builder.start(); 

をするか、このアプローチを好む場合:

これを試してみてください

ProcessBuilder builder = new ProcessBuilder(
      "cmd.exe", "/c", "cd \"C:\\Users\\Test\" && dir"); 

    Process pr = builder.start(); 

ここSO上でこの1に類似し、他のいくつかの質問がありますが、私はあなたにもそれらをチェックアウトして行くお勧めより良いアイデアを得る。

+0

実際には、シェルの組み込みコマンドである 'cd'を実行することはできません。可能であれば、サブプロセスにのみ適用されます。これは、Javaプログラムまたはそれ以降の起動したサブプロセスには戻されません。 –

+0

'Runtime.exec()'で 'cd'を実行しても、それ以降の呼び出しに影響はないと思います。 –

+0

申し訳ありませんが、少し混乱して、ProcessBuilderが動作します。 – Athamas

関連する問題