标题: [文本处理] 批处理FOR循环一段时间后出错,前面却没问题 [打印本页]
作者: hentai87 时间: 2020-7-19 16:36 标题: 批处理FOR循环一段时间后出错,前面却没问题
- @echo off
- ::adb临时加入到path环境变量
- set My_PATH=.\SDK\adb
- set PATH=%PATH%;%My_PATH%
- md .\bak\ 2>nul
- setlocal enabledelayedexpansion
- ::列出已装的app
- for /f "usebackq delims=:== tokens=2,3,4" %%i in (`adb shell pm list packages -f -3`) do (
-
- if "%%k"=="" (set P=%%j) else (set P=%%k)
-
- for %%i in (.\bak\*!P!.apk) do (
- echo !P!
- for /f tokens^=6^ delims^=^' %%a in ('.\SDK\aapt2\aapt2.exe dump badging %%i 2^>nul
- ^|findstr /c:"versionName"') do set A=%%a
- )
- ECHO 123
-
- )
- pause
复制代码
com.miv.rtmpcamera
123
cn.xiaochuankeji.tieba
123
com.lgh.accessibilitytool
123
com.ihewro.android_expression_package
123
com.homelink.android
123
net.duohuo.magapp.jysq
123
org.telegram.messenger
123
com.tencent.tmgp.sgame
123
com.teslacoilsw.launcher
123
com.yizhe_temai
123
web1n.stopapp
123
com.sankuai.meituan
123
air.tv.douyu.android
123
com.kumobius.android.duet
123
bos.consoar.imagestitch
123
org.isoron.uhabits
123
com.keramidas.TitaniumBackup
123
com.sky.xposed.rimet
123
jp.pxv.android
123
com.dmzj.manhua
123
com.tencent.gamehelper.smoba
123
eu.thedarken.sdm.unlocker
123
com.microsoft.office.excel
123
moe.shizuku.privileged.api
123
com.realbyteapps.moneymanagerfree
123
in.zhaoj.shadowsocksr
123
net.dinglisch.android.taskerm
123
com.tencent.mm
123
123
123
com.sankuai.meituan.takeoutnew
123
com.xiaomi.jr
123
123
123
123
123
123
123
123
com.zhaopin.social
123
123
123
123
dkplugin.ylg.mux
123
com.tencent.djcity
123
123
com.aboutjsp.thedaybefore
123
com.omarea.vtools
123
com.google.zxing.client.android
123
123
com.pp.assistant
123
org.meowcat.edxposed.manager
123
de.telekom.tsc
123
123
com.estrongs.android.pop
123
com.tencent.tgclub
123
123
com.xunmeng.pinduoduo
123
com.rarlab.rar
123
123
com.enniu.fund
123
123
com.android.app.quanmama
123
com.findtheway
123
123
com.slowlyapp
123
com.softbank.mbank.xy.gafz
123
com.tencent.mobileqq
123
123
123
123
com.topjohnwu.magisk
123
123
123
123
123
123
123
123
123
123
123
123
123
123
123
123
123
123
123
123
123
123
123
123
123
com.jingdong.app.mall
123
123
com.android.calculator2
123
123
123
123
123
123
123
123
123
com.iflytek.inputmethod
123
123
123
123
123
123
123
123
123
123
123
123
123
123
com.taobao.taobao
123
123
123
123
123
123
123
123
123
123
作者: hentai87 时间: 2020-7-19 19:34
来个大佬。。。
作者: went 时间: 2020-7-19 19:58
看你代码,是因为备份文件夹下不存在以当前包名结尾的apk文件
for %%i in (.\bak\*!P!.apk) do (
echo !P!
...
)
所以只会输出123,也就是你当前包名对应的apk并没有备份
作者: hentai87 时间: 2020-7-19 20:15
回复 3# went
如果是不存在apk,那么前面又为什么成功
作者: hentai87 时间: 2020-7-19 20:21
本帖最后由 hentai87 于 2020-7-19 20:25 编辑
回复 3# went
好像确实是这样,但原问题bat不是这个,为了方便问问题简化过了
没有文件也能备份,但仅限前面部分和后面的一小步- @echo off
- ::adb临时加入到path环境变量
- set My_PATH=.\SDK\adb
- set PATH=%PATH%;%My_PATH%
- md .\bak\ 2>nul
- setlocal enabledelayedexpansion
- ::列出已装的app
- for /f "usebackq delims=:== tokens=2,3,4" %%i in (`adb shell pm list packages -f -3`) do (
-
- if "%%k"=="" (set P=%%j) else (set P=%%k)
-
- for /f tokens^=2^ delims^=^= %%a in ('adb shell dumpsys package !P! 2^>nul ^|findstr versionName') do set B=%%a
-
-
- for %%i in (.\bak\*!P!.apk) do (
- echo %%i
- echo !P!
- for /f tokens^=6^ delims^=^' %%a in ('.\SDK\aapt2\aapt2.exe dump badging %%i 2^>nul
- ^|findstr /c:"versionName"') do set A=%%a
- )
- ECHO !P!_!B!→!A!
-
- if "!B!" GTR "!A!" (
- del .\bak\*!P!.apk 2>nul
- for /f tokens^=4^ delims^=^= %%a in ('adb shell dumpsys package !P! 2^>nul^|findstr targetSdk') do set C=%%a
- if "%%k"=="" (adb pull %%i .\bak\API_!C!_%%j.apk >nul|ECHO 已备份) else (adb pull %%i==%%j .\bak\API_!C!_%%k.apk >nul|ECHO 已备份)
- ) else (
- echo 不需要更新
- )
- )
- pause
复制代码
作者: hentai87 时间: 2020-7-19 20:35
本帖最后由 hentai87 于 2020-7-19 20:49 编辑
回复 5# hentai87
解决了,是。。换行的问题
但是还是没好,对已备份的apk,版本识别有时会停留在上个apk,上个apk是1.2,下个也是1.2
输出
com.flyersoft.moonreaderp_4.5.7→4.5.7
com.zhaopin.social_7.9.51→4.5.7[code]@echo off
作者: hentai87 时间: 2020-7-19 20:47
回复 6# hentai87
似乎也是因为没有文件造成没有设置版本号,但是有的就能成功,我删光apk了,有的还是备份成功了
作者: went 时间: 2020-7-19 20:56
你5楼代码15行上面初始化一下版本
set "A=0"
for %%i in (.\bak\*!P!.apk) do (
echo !P!
...."set A=%%a"
)
作者: hentai87 时间: 2020-7-19 21:03
回复 8# went
厉害。我还想着加个检测文件是否存在试一试的,你这样快多了
作者: went 时间: 2020-7-19 21:18
不要使用versionName来判断版本新旧,很容易出错,版本号会含有很多字符和字母
比如1.9.1和1.10.1会判断错误
用versionCode来判断,每个新版本apk都会增加版本代码,而且是纯数字,直接比较大小
作者: went 时间: 2020-7-19 21:19
载过跟头,总结出来的经验
另外保存的文件名也可以优化一下
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |