好的我正在学习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();线
答案 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);
}
}
});
在此代码中,您/sdcard/music
2)从/sdcard/music
pic1
复制到/sdcard/pic1
答案 1 :(得分:0)
我在猜测,但你可能误解了exec的参数究竟是什么。它不是要执行的命令列表(有效地是批处理/ shell脚本),而是一个命令,它的参数由shell执行。像Pepelac这样的单线程建议或将一系列命令放入一个文件中,然后您可以使用exec执行该文件。对于您尝试执行的命令,绝对没有理由不能将其包含在包含完整源路径的单行中(而不是更改为它),但可能还有其他原因导致您需要执行此操作你没有提到过。