使用app发送多个shell命令

时间:2012-09-28 06:39:42

标签: java android shell command

好的我正在学习shell命令是如何工作的,所以我决定开发一个app来发送命令。这就是我得到的。

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);
            }
        }
    });

但它不起作用,第一个命令正在工作,但不是第二个命令。我应该添加什么?

由于

编辑:忘了添加send.waitFor();线

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我在猜测,但你可能误解了exec的参数究竟是什么。它不是要执行的命令列表(有效地是批处理/ shell脚本),而是一个命令,它的参数由shell执行。像Pepelac这样的单线程建议或将一系列命令放入一个文件中,然后您可以使用exec执行该文件。对于您尝试执行的命令,绝对没有理由不能将其包含在包含完整源路径的单行中(而不是更改为它),但可能还有其他原因导致您需要执行此操作你没有提到过。