Board logo

标题: [文本处理] 能否通过批处理替换文件中的指定字符串? [打印本页]

作者: xmaojian    时间: 2014-10-4 18:33     标题: 能否通过批处理替换文件中的指定字符串?

假设电脑磁盘的任意一个目录下(x:\XXX\)有这样几个文件:
boot.img
recovery-from-boot.p
adb.exe
install-recovery.sh(类似于.bat文件)
make.bat

其中,install-recovery.sh文件内容形式如下:
#!/system/bin/sh
update_recovery --check-sha1 98fe5b9f33d3069c5865a1fb26c584a92412cd94 \
                --src-sha1 b076801a9930e347983a31c0c09bf8db58ada49a \
                --tgt-sha1 fc4f6cb4208b347df32cf8710a9cb8e247915373 \
                --tgt-size 11349504 \
                --patch /system/recovery-from-boot.p
手机打开的界面图:


make.bat文件的内容如下:

adb push boot.img /data/local/tmp
adb push recovery-from-boot.p /data/local/tmp
adb shell "cd /data/local/tmp; applypatch boot img recovery.img fc4f6cb4208b347df32cf8710a9cb8e247915373 11349504 b076801a9930e347983a31c0c09bf8db58ada49a:recovery-from-boot.p"
adb pull /data/local/tmp/recovery.img

其中,紫色“fc4f6cb4208b347df32cf8710a9cb8e247915373”这一串字符就是install-recovery.sh中tgt-sha1后面的那一串字符(字符串前后均有空格,以下同),而蓝色“11349504”对应
install-recovery.sh中tgt-size后面的那串字符,最后的红色“b076801a9930e347983a31c0c09bf8db58ada49a”则对应install-recovery.sh中src-sha1后面的那串字符。


问题:能否编写一个bat文件,使得自动读取install-recovery.sh中上述三串字符的内容,并自动替换到make.bat中的相应位置,其中所有的5个文件的名称都是固定的,且都在同一目录下,另外install-recovery.sh文件的格式是固定的,大大们如能回复,万分感谢。。。

PS:自己得知某手机rom官方recovery提取方法,因为有很多版本,且提取方法均是一样,于是想能不能做个简单点的批处理,简化下操作,尤其适用于不太了解的朋友。

作者: terse    时间: 2014-10-4 19:49

在同目录下执行  运行前 请先备份
  1. @echo off&setlocal enabledelayedexpansion
  2. set str=/c:"--tgt-size" /c:"--tgt-sha1" /c:"--src-sha1"
  3. for /f "tokens=2" %%i in (' findstr /i %str%  install-recovery.sh') do (
  4.     set s2=!s!
  5.     set s=!s1!
  6.     set s1=%%i
  7. )
  8. (echo;adb push boot.img /data/local/temp
  9. echo;adb push recovery-from-boot.p /data/local/temp
  10. echo;adb shell "cd /data/local/tmp; applypatch boot img recovery.img %s% %s1% %s2%:recovery-from-boot.p"
  11. echo;adb pull /data/local/tmp/recovery.img)>make.bat
  12. pause
复制代码

作者: xmaojian    时间: 2014-10-4 20:06

本帖最后由 xmaojian 于 2014-10-4 20:52 编辑

回复 2# terse


厉害,批处理运行正确无误,完美生成准确的make.bat,再次感谢了。。。PS:我1楼自己写的make.bat其中的2个目录出了点错误。。。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2