使用批处理(.bat)文件自动执行adb shell命令

时间:2016-06-20 02:23:58

标签: android windows shell batch-file

我经常授予对Android手机(root手机)中不同系统文件的读/写/执行(chmod 777)权限。有时我将chmod 777命令添加到启动脚本中,只是为了节省时间。 在三星Galaxy S6手机上,我正在更新文件(脚本):'/ etc / init.sec.boot.sh',在文件末尾添加以下命令。

chmod 777 <filename>

使用以下命令

在adb shell内部工作正常
su
echo 'chmod 777 <filename>' >> /etc/init.sec.boot.sh

现在,如果我尝试使用.bat文件,它会给我许可错误。我使用以下命令

adb shell su -c "echo \"chmod 777 <filename>\" >> /etc/init.sec.boot.sh"

由于此命令不起作用,我将文件复制到sdcard,修改它,然后用修改后的版本替换原始文件。如果我现在读取文件的内容,它会准确读取我想要的内容,但chmod命令永远不会执行。我重启了几次电话,但文件许可完全没有实现。此时,如果我从shell内部运行相同的命令,则可行。

su
echo 'chmod 777 <filename>' >> /etc/init.sec.boot.sh

此时,init.sec.boot.sh文件中的最后两行如下所示。

chmod 777 <filename>
chmod 777 <filename>

最后两行看起来完全一样。 chmod命令仅在从shell内部写入时才有效。我能想到的唯一合理的解释是,windows命令提示符和Android linux shell可能使用不同的文本编码。 如何从.bat文件(甚至直接从命令提示符)成功执行chmod命令。

PS:我做了重装/系统读/写。

1 个答案:

答案 0 :(得分:0)

我猜问题是Windows EOL和Unix EOL之间的区别。

所以我在Linux系统(Androids Linux系统)中创建了一个脚本来做chmod的东西。使用adb pull命令将.sh文件复制到我的Windows机器。

现在我的原始批处理文件将此脚本复制回手机并执行它。 (我不得不将脚本复制到手机内的/ data / local)。 这很完美。