Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用app发送多个shell命令_Java_Android_Shell_Command - Fatal编程技术网

Java 使用app发送多个shell命令

Java 使用app发送多个shell命令,java,android,shell,command,Java,Android,Shell,Command,好的,我正在学习shell命令是如何工作的,所以我决定开发一个应用程序来发送命令。这就是我得到的 moveDirectory.setOnClickListener(new OnClickListener(){ public void onClick(View v) { try{ Process send = Runtime.getRunetime().exec(new String[] {"cd /sdcard/music/", "cp p

好的,我正在学习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();行

使用正常命令delimeter

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
使用普通命令delimeter

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

我在猜测,但您可能误解了要执行的参数。它不是一个要执行的命令列表(实际上是一个批处理/shell脚本),而是一个包含shell要执行的参数的单个命令。让它成为Pepelac建议的一行程序,或者将一系列命令放在一个单独的文件中,稍后使用exec执行,这可能就是您想要的。对于您试图执行的命令,没有任何理由不能使其成为包含完整源路径的单行程序(而不是更改为它),但可能还有其他原因需要执行此操作,您没有提到。

我在猜测,但您可能误解了exec的参数。它不是一个要执行的命令列表(实际上是一个批处理/shell脚本),而是一个包含shell要执行的参数的单个命令。让它成为Pepelac建议的一行程序,或者将一系列命令放在一个单独的文件中,稍后使用exec执行,这可能就是您想要的。对于您尝试执行的命令,没有任何理由不能使其成为包含完整源路径(而不是更改为完整源路径)的一行程序,但可能还有其他原因需要执行此操作,您没有提到。

您是否拥有成功执行这些目录的所有权限?不知道我需要权限,我需要哪些?如果是权限问题,为什么它会将目录更改为/sdcard/music/,但不会复制文件?您是否拥有成功复制这些目录的所有权限?不知道我需要权限,我应该需要哪些权限?如果是权限问题,为什么它将目录更改为/sdcard/music/,但不复制文件?天哪,真不敢相信它这么简单。。。非常感谢,这就成功了,最后一个问题:我可以添加我想要的吗?是的,但所有的都必须是腐植酸;-象征。还有更多关于bash的信息,你可以在这里找到很棒的链接,这会让我读上几天。非常感谢你!天哪,真不敢相信事情这么简单。。。非常感谢,这就成功了,最后一个问题:我可以添加我想要的吗?是的,但所有的都必须是腐植酸;-象征。还有更多关于bash的信息,你可以在这里找到很棒的链接,这会让我读上几天。非常感谢你!