【问题标题】:Automating adb shell commands using batch(.bat) files使用批处理 (.bat) 文件自动执行 adb shell 命令
【发布时间】:2016-06-20 02:23:57
【问题描述】:

我定期授予对 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:我确实重新安装了 /system 以读取/写入。

【问题讨论】:

  • &gt;&gt; 在 Windows 中的含义与在 unix 中的含义相同。如果您希望您的重定向由 adb shell 处理,您必须在 Windows 中转义它们。所以^&gt;^&gt;.
  • 我已经将所有内容都插入到了“”中。所以一切都应该在 adb shell 内执行。我也尝试了使用 ^>^> 的方法,但它停止将 chmod 命令连接到原始脚本。

标签: android windows shell batch-file


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多