0

わかりましたシェルコマンドの仕組みを学んでいるので、コマンドを送信するアプリを開発することにしました。これは私が得たものです。

moveDirectory.setOnClickListener(new OnClickListener(){
    public void onClick(View v)
    {
        try{
            Process send = Runtime.getRunetime().exec(new String[] {"cd /sdcard/music/", "cp pic1 /sdcard/pic1"});
            send.waitFor();
        } catch (Exception ex){
            String toast = null;
            Log.i(toast, "Couldn't copy file", ex);
            }
        }
    });

最初のコマンドは機能していますが、2 番目のコマンドは機能していません。それに何を追加すればよいですか?

ありがとう

編集: send.waitFor(); を追加するのを忘れていました。ライン

4

2 に答える 2

3

通常のコマンド区切りを使用する;

moveDirectory.setOnClickListener(new OnClickListener(){
    public void onClick(View v)
    {
        try{
            Process send = Runtime.getRunetime().exec(new String[] {"cd /sdcard/music/ ; cp pic1 /sdcard/pic1"});
        } catch (Exception ex){
            String toast = null;
            Log.i(toast, "Couldn't copy file", ex);
            }
        }
    });

このコードでは、
1) /sdcard/music
2) コピー元に移動/sdcard/music pic1します。/sdcard/pic1

于 2012-09-28T06:49:22.947 に答える
0

私は推測していますが、execのパラメーターが実際に何であるかを誤解している可能性があります。これは、実行されるコマンドのリスト(事実上バッチ/シェルスクリプト)ではなく、シェルによって実行される引数を含む単一のコマンドです。Pepelacが提案するようなワンライナーにするか、一連のコマンドを1つのファイルに入れて、後でexecで実行することをお勧めします。実行しようとしているコマンドの場合、(変更するのではなく)完全なソースパスを含むワンライナーにすることができない理由はまったくありませんが、これを行う必要がある理由は他にもある可能性があります。あなたは言及していません。

于 2012-09-28T06:52:12.213 に答える