0

好的,我正在学习 shell 命令的工作原理,所以我决定开发一个应用程序来发送命令。这就是我得到的。

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(); 线

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 的参数到底是什么。它不是要执行的命令列表(实际上是批处理/shell 脚本),而是带有要由 shell 执行的参数的单个命令。像 Pepelac 建议的那样使其成为单行命令,或者将一系列命令放入稍后使用 exec 执行的单个文件中,这可能是您想要的。对于您尝试执行的命令,绝对没有理由不能使其成为包含完整源路径的单行代码(而不是更改为它),但可能还有其他原因需要您这样做你没有提到。

于 2012-09-28T06:52:12.213 回答