找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: hentai87

[文本处理] 不用临时文件怎么比较2个for结果的差异

[复制链接]
发表于 2020-7-21 18:10:30 | 显示全部楼层
输出 s1 s2 看看,里面有空格等特殊符号?
 楼主| 发表于 2020-7-21 18:37:20 | 显示全部楼层
回复 16# newswan


wiki.mooncell.app
com.google.zxing.client.android
com.miv.rtmpcamera
com.zhiyoo
com.bilibili.fatego
com.homelink.android
com
dkplugin.ylg.mux
in.zhaoj.shadowsocksr
cn.colg.android
com.alibaba.android.rimet
com.alibaba.android.security.activity
com.baidu.wallet
com.bilibili.comic
com.bly.dkplat
com.cn21.ecloud
com.enniu.fund
com.estrongs.android.pop
com.iflytek.inputmethod
com.ihewro
com.immomo.momo
com.keramidas.TitaniumBackup
com.kuaishou.nebula
com.kumobius.android.duet
com.liqu.app
com.netease.cloudmusic
com.picacomic.fregata
com.pingan.paces.ccms
com.pp.assistant
com.qzone
com.sankuai.meituan.takeoutnew
com.sgcc.wsgw.cn
com.taobao.idlefish
com.taptap
com.tencent.gamehelper.dnf
com.tencent.gamehelper.smoba
com.tencent.tmgp.sgame
com.valvesoftware.android.steam.community
com.xiaomi.router
com
com.zhangdan.app
net.dinglisch.android.taskerm
ru.sxbuIDfx.pFSOyagrF
tv.danmaku.bili
bos.consoar.imagestitch
cn.xiaochuankeji.tieba
com.android.app.quanmama
com.autonavi.minimap
com.chinamworld.bocmbci
com.fbank.mobile
com.sky.xposed.rimet
com.taobao.etao
com.tencent.token
com.xunmeng.pinduoduo
org.meowcat.edxposed.manager
air.tv.douyu.android
ccc71.at.free
cn.garymb.ygomobile
cn.soulapp.android
cn.wq.myandroidtools
com.aboutjsp.thedaybefore
com.android.calculator2
com.antfortune.wealth
com.baidu.netdisk
com.binance.dev
com.cebbank.mobile.cemb
com.coolapk.market
com.cryptobees.mimind
com.dv.adm
com.eg.android.AlipayGphone
com.findtheway
com.flyersoft.moonreaderp
com.greenpoint.android.mc10086.activity
com.habitrpg.android.habitica
com.huanchengfly.tieba.post
com.jd.jrapp
com.jingdong.app.mall
com.joaom**.autonotification
com.keramidas.TitaniumBackupAddon
com.microsoft.office.excel
com.njgdmm.zjy
com.omarea.vtools
com.p1.mobile.putong
com.realbyteapps.moneymanagerfree
com.sankuai.meituan
com.sdu.didi.psnger
com.slowlyapp
com.softbank.mbank.xy.gafz
com.taobao.litetao
com.taobao.taobao
com.teamviewer.quicksupport.market
com.teamviewer.teamviewer.market.mobile
com.tencent.djcity
com.tencent.mm
com.tencent.mobileqq
com.tencent.tgclub
com.tencent.xriver
com.teslacoilsw.launcher
com.topjohnwu.magisk
com.unionpay
com.winterso.markup.annotable
com.wo.voice2
com.workpail.inkpad.notepad.notes
com.xiaomi.jr
com.ymbank.mbank.app
com.zhaopin.social
com.zhihu.android
de.telekom.tsc
eu.thedarken.sdm
eu.thedarken.sdm.unlocker
flar2.exkernelmanager
gov.anzong.androidnga
jp.pxv.android
net.dotpicko.dotpict
net.duohuo.magapp.jysq
org.mozilla.firefox
org.telegram.messenger
web1n.stopapp
cf.playhi.freezeyou
com.accuweather.android
com.dmzj.manhua
com.google.android.apps.nbu.files
com.hily.app
com.lgh.accessibilitytool
com.rarlab.rar
com.setupvpn.main
me.piebridge.brevent
moe.shizuku.privileged.api
org.isoron.uhabits
rikka.appops
xzr.La.systemtoolbox

com.tencent.tmgp.sgame web1n.stopapp com.sankuai.meituan github.tornaco.xposedmoduletest eu.thedarken.sdm.unlocker moe.shizuku.privileged.api com.tencent.mm com.sdu.didi.psnger com.chinamworld.bocmbci com.milecn.milevideo com.omarea.vtools org.meowcat.edxposed.manager com.estrongs.android.pop com.findtheway xzr.La.systemtoolbox com.tencent.mobileqq com.unionpay com.topjohnwu.magisk ccc71.at.free cn.wq.myandroidtools com.zhihu.android com.jd.jrapp com.coolapk.market eu.thedarken.sdm com.jingdong.app.mall com.mmbox.xbrowser com.autonavi.minimap com.alibaba.android.rimet flar2.exkernelmanager com.iflytek.inputmethod cn.soulapp.android tv.danmaku.bili com.eg.android.AlipayGphone com.taobao.etao
发表于 2020-7-21 19:05:25 | 显示全部楼层
能否看下你的apk文件命名方式
如果能取出包名,两个for就可以解决
 楼主| 发表于 2020-7-21 19:14:11 | 显示全部楼层
回复 18# went


是指你上次说的吗
我成功了啊
for %%i in (.\bak\*.apk) do (
        for /f "delims=^_ tokens=3" %%A in ("%%i") do (
                echo %%~nA
                adb shell pm dump %%~nA | findstr /i /C:"Unable to find package" && ( adb install %%i ) || ( echo 已安装,跳过 )
        )
)

实际执行过程每次就要adb,很慢

如果能直接获得未安装列表,直接执行安装,不就能快一倍了
发表于 2020-7-21 19:32:33 | 显示全部楼层
回复 19# hentai87
不是,可以设置变量,执行一次adb shell pm list package -3就行了
 楼主| 发表于 2020-7-21 19:40:50 | 显示全部楼层
回复 20# went


我apk名字是api_等级_包名
虽然不知道你怎么做
但估计还是得每次都查询一下api等级吧
 楼主| 发表于 2020-7-21 19:52:37 | 显示全部楼层
回复 14# newswan


这样也是闪退,估计真是语句不对
setlocal enabledelayedexpansion
set Lf=^&echo,
for %%i in (123,321,456) do (
                        set "s1=!s1!%%i!Lf!"
)
echo %s1%
for %%i in (123,321) do (
        set "s2=!s2!%%i "
)
echo %s2%
(echo %s1%) | findsrt %s2%
pause
发表于 2020-7-21 19:56:12 | 显示全部楼层
13行以下是过滤条件,可以灵活组合
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 记录已备份的apk
  4. for /f "tokens=3 delims=_" %%i in ('dir /b .\bak\*.apk') do set "#%%~ni=已备份#未安装"
  5. REM 记录已安装的apk
  6. for /f "tokens=2 delims=:" %%i in ('adb shell pm list package -3') do (
  7.         if "!#%%i!"=="" (
  8.                 set "#%%i=未备份#已安装"
  9.         ) else (
  10.                 set "#%%i=已备份#已安装"
  11.         )
  12. )
  13. REM 过滤
  14. echo 未安装:
  15. for /f "delims=#=" %%i in ('set # ^| findstr "未安装"') do echo %%i
  16. echo ------------------------
  17. echo 未备份:
  18. for /f "delims=#=" %%i in ('set # ^| findstr "未备份"') do echo %%i
  19. echo ------------------------
  20. echo 已安装:
  21. for /f "delims=#=" %%i in ('set # ^| findstr "已安装"') do echo %%i
  22. echo ------------------------
  23. echo 已备份:
  24. for /f "delims=#=" %%i in ('set # ^| findstr "已备份"') do echo %%i
  25. echo ------------------------
  26. pause&exit
复制代码

评分

参与人数 1技术 +1 收起 理由
hentai87 + 1 乐于助人

查看全部评分

 楼主| 发表于 2020-7-21 20:12:40 | 显示全部楼层
回复 23# went


包名含有_的提取包名失败了
比如API_26_com.ihewro.android_expression_package
被弄成了com.ihewro
 楼主| 发表于 2020-7-21 20:17:44 | 显示全部楼层
回复 24# hentai87


    = =。
我感觉这个问题无解了,
我还以为_不会被用到的,没想到居然还是又包名用了。。。
我感觉我应该用#打标签。。。。
然后不会又遇到含有#的包名吧。。。。尴尬
发表于 2020-7-21 20:25:46 | 显示全部楼层
存为2个文件 s1.txt s2.txt

  1. @echo off
  2. setlocal enableDelayedExpansion

  3. set _Lf_=^&echo,

  4. for /f %%i in (s1.txt) do (
  5.         set s1=!s1!%%i!_Lf_!
  6. )
  7. echo %s1%

  8. for /f %%i in (s2.txt) do (
  9.         set "s2=!s2!%%i "
  10. )
  11. echo %s2%

  12. echo,
  13. (echo %s1%) | findstr "%s2%"
复制代码
win10
输出结果为:
com.alibaba.android.rimet
com.estrongs.android.pop
com.iflytek.inputmethod
com.sankuai.meituan.takeoutnew
com.tencent.tmgp.sgame
tv.danmaku.bili
com.autonavi.minimap
com.chinamworld.bocmbci
com.taobao.etao
org.meowcat.edxposed.manager
ccc71.at.free
cn.soulapp.android
cn.wq.myandroidtools
com.coolapk.market
com.eg.android.AlipayGphone
com.findtheway
com.jd.jrapp
com.jingdong.app.mall
com.omarea.vtools
com.sankuai.meituan
com.sdu.didi.psnger
com.tencent.mm
com.tencent.mobileqq
com.topjohnwu.magisk
com.unionpay
com.zhihu.android
eu.thedarken.sdm
eu.thedarken.sdm.unlocker
flar2.exkernelmanager
web1n.stopapp
moe.shizuku.privileged.api
xzr.La.systemtoolbox
发表于 2020-7-21 20:32:11 | 显示全部楼层
本帖最后由 newswan 于 2020-7-21 20:37 编辑

(echo %s1%) | findsrt %s2%

%s2% 用""括起来

晕,前面的我忘记用引号了。

评分

参与人数 1技术 +1 收起 理由
hentai87 + 1 乐于助人

查看全部评分

发表于 2020-7-21 20:38:13 | 显示全部楼层
回复 25# hentai87
怎么无解了,for你没用熟把
第4行改为
  1. for /f "tokens=1,2* delims=_" %%i in ('dir /b .\bak\*.apk') do set "#%%~nk=已备份#未安装"
复制代码

评分

参与人数 1技术 +1 收起 理由
hentai87 + 1 乐于助人

查看全部评分

发表于 2020-7-21 20:40:10 | 显示全部楼层
*表示第二段后面的所有字符,包含分隔符在内的
 楼主| 发表于 2020-7-21 20:47:48 | 显示全部楼层
回复 27# newswan


是可以了,但如何把最后的list 用到命令上呢
比如最后结果是
123
456


adb 123
adb 456
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 04:11 , Processed in 0.021505 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表