Board logo

标题: [文件操作] [已解决]批处理如何使用WinRAR删除APK中的classes.dex? [打印本页]

作者: 穿越    时间: 2016-2-13 12:53     标题: [已解决]批处理如何使用WinRAR删除APK中的classes.dex?

本人是个小白,以前有个类似的脚本,硬盘坏了丢了,就想自己写个脚本,试着写了个,运行却无效,请帮看看哪里有问题:
  1. @echo off
  2. COLOR 0A
  3. echo ======================================================================
  4. echo = 请输入 1 ^| 2 ^| 3 选择你需要的操作
  5. echo = 1. 删除 app文件夹  classes.dex
  6. echo = 2. 删除 priv-app文件夹  classes.dex   
  7. echo = 3. 删除 framework文件夹  classes.dex
  8. echo ======================================================================
  9. set choice=
  10. set /p choice= 选择你的操作(Your choice):
  11. IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
  12. if /i "%choice%"=="1" goto app
  13. if /i "%choice%"=="2" goto priv-app
  14. if /i "%choice%"=="3" goto framework
  15. echo. 选择无效,请重新输入
  16. echo. Choice is invalid, please enter again
  17. echo.
  18. goto MENU1
  19. :app
  20. echo. 正在删除 app文件夹  classes.dex...
  21. WinRAR d "app\*.*" classes.dex
  22. goto OKorNo%ERRORLEVEL%
  23. :priv-app
  24. echo. 正在删除 priv-app文件夹  classes.dex...
  25. WinRAR d priv-app\-classes.dex
  26. goto OKorNo%ERRORLEVEL%
  27. :framework
  28. echo. 正在删除 framework文件夹  classes.dex...
  29. WinRAR-d-framework\-classes.dex
  30. goto OKorNo%ERRORLEVEL%
  31. :OKorNo0
  32. CLS
  33. echo. ---------------------------------------
  34. echo. 已删除完成!
复制代码
请大神指点,谢谢!
作者: ivor    时间: 2016-2-13 13:50

本帖最后由 ivor 于 2016-2-13 14:15 编辑
  1. :framework
  2. echo. 正在删除 framework文件夹  classes.dex...
  3. WinRAR-d-framework\-classes.dex
  4. goto OKorNo%ERRORLEVEL%
复制代码
命令开关  不要加-,后面两个call都没有提供压缩文件
  1. 用法:     rar <命令> -<参数 1> -<参数 N> <压缩文件> <文件...>
  2.                <@列表文件...> <解压路径\>
复制代码
  1. rar d 压缩文件 文件路径
复制代码
PS:rar 不支持APK文件
作者: 穿越    时间: 2016-2-13 15:56

回复 2# ivor
APK其实就是个ZIP文件,RAR应该可先打开再删除里面的文件的,记得以前用过一个脚本实现过
作者: 穿越    时间: 2016-2-13 16:12

回复 2# ivor


    改成这样
  1. for /r "app\" %%a in (*.jar *.apk) do "WinRAR.exe" d -ibck "%%a" classes.dex
复制代码
就只会用RAR打开APP目录却不进行下一步操作
作者: ivor    时间: 2016-2-13 16:45

本帖最后由 ivor 于 2016-2-13 16:54 编辑
  1. for /r .\app %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
复制代码
我还不知道winrar也能支持命令呢 囧。。。
作者: 穿越    时间: 2016-2-13 19:37

回复 5# ivor


    还是只会用RAR打开APP目录却不进行下一步操作,我改成这样:
  1. for /r .\app %%a in (*.apk *.jar) do (WinRAR.exe d -x*\* -inul "%%a" classes.dex)
复制代码
也不行
作者: ivor    时间: 2016-2-13 20:04

本帖最后由 ivor 于 2016-2-13 20:13 编辑

我建议你去掉循环for在控制台里面输入单个命令试一下,是否能正常运行。代码已经测试过我的电脑没问题,能正常删除classes.dex
  1. WinRAR.exe d -inul "xx.apk" classes.dex
复制代码

作者: 穿越    时间: 2016-2-14 09:51

本帖最后由 穿越 于 2016-2-14 10:01 编辑

回复 7# ivor

奇怪了,还是只打开文件目录

改成目录中有的APK文件名也不行:

作者: ivor    时间: 2016-2-14 10:56

回复 8# 穿越


    有可能是版本问题,我的rar版本是5.01

我的单条命令执行没问题,路径还建了和你一样的
作者: 穿越    时间: 2016-2-14 19:24

回复 9# ivor


    我的是5.3.1,不应该不行吧,而且换了个版本也不行
作者: ivor    时间: 2016-2-14 19:43

回复 10# 穿越


    排除法,有可能是很简单,但是你没考虑到
作者: WHY    时间: 2016-2-14 23:19

在我的机器上,把WinRAR.exe文件单独提取出来运行,变成评估版本啦~
这样试下:
把单独提出来的WinRAR.exe删除,假设WinRAR安装在C:\Program Files\WinRAR目录
  1. path C:\Program Files\WinRAR;%path%
  2. WinRAR.exe d -inul "456.apk" classes.dex
复制代码

作者: 穿越    时间: 2016-2-15 19:31

回复 12# WHY
非常感谢!同时也非常感谢ivor兄弟

我之前在文件夹中放了个单文件版的RAR,看来是RAR版本有冲突,造成脚本无效,刚删除了RAR,用了path C:\Program Files\WinRAR;%path% 就成功了,同时把脚本优化了下,请帮看看还有需改进的地方吗?
  1. @echo off
  2. mode con cols=100 lines=30
  3. TITLE 删除dex
  4. COLOR 0A
  5. echo. -----------------------------------------------------------------
  6. echo. 确认各文件夹中文件放置正确
  7. echo. 确认各文件夹中无需备份文件
  8. echo. 准备好后按任意键继续...
  9. echo. Press any key to continue...
  10. echo. -----------------------------------------------------------------
  11. pause >NUL 2>NUL
  12. CLS
  13. path C:\Program Files\WinRAR;%path% pid %%i 1>nul 2>nul
  14. :MENU1
  15. CLS
  16. echo ======================================================================
  17. echo = 请输入 1 ^| 2 ^| 3 ^| 4 ^| 5 选择你需要的操作
  18. echo = 1. 删除 app文件夹  classes.dex
  19. echo = 2. 删除 priv-app文件夹  classes.dex   
  20. echo = 3. 删除 framework文件夹  classes.dex
  21. echo = 4. 删除 framework与app 文件夹  classes.dex
  22. echo = 5. 退出
  23. echo ======================================================================
  24. set choice=
  25. set /p choice= 选择你的操作(Your choice):
  26. IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
  27. if /i "%choice%"=="1" goto app
  28. if /i "%choice%"=="2" goto priv-app
  29. if /i "%choice%"=="3" goto framework
  30. if /i "%choice%"=="4" goto frapp
  31. if /i "%choice%"=="5" goto EXIT
  32. echo. 选择无效,请重新输入
  33. echo. Choice is invalid, please enter again
  34. echo.
  35. goto MENU1
  36. :app
  37. echo. 正在删除 app文件夹  classes.dex...
  38. for /r .\app %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
  39. goto MENU1
  40. :priv-app
  41. echo. 正在删除 priv-app文件夹  classes.dex...
  42. for /r .\priv-app %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
  43. goto MENU1
  44. :framework
  45. echo. 正在删除 framework文件夹  classes.dex...
  46. for /r .\framework %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
  47. goto MENU1
  48. :frapp
  49. echo. 正在删除 framework/app 文件夹  classes.dex...
  50. for /r .\framework %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
  51. for /r .\app %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
  52. goto MENU1
  53. :EXIT
  54. exit
复制代码

作者: ivor    时间: 2016-2-17 21:50

本帖最后由 ivor 于 2016-2-17 22:01 编辑

回复 13# 穿越
  1. :MENU1
  2. set /p choice= 选择你的操作(Your choice):
  3. IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
  4. if /i "%choice%"=="1" call :delFile app
  5. if /i "%choice%"=="2" call :delFile priv-app
  6. if /i "%choice%"=="3" call :delFile framework
  7. if /i "%choice%"=="4" call :delFile frapp
  8. if /i "%choice%"=="5" goto :EOF
  9. goto MENU1
  10. :delFile folder
  11. echo. 正在删除 %1文件夹  classes.dex...
  12. for /r .\%1 %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
  13. goto MENU1
复制代码
标签4合一
作者: ygqiang    时间: 2016-2-18 07:34

回复 13# 穿越


    path C:\Program Files\WinRAR;%path%

万一是win7 64系统。

应该是C:\Program Files (x86)\WinRAR吧?
作者: WHY    时间: 2016-2-18 11:44

回复 15# ygqiang


    C:\Program Files\WinRAR 只是假设
话说64位的WinRAR不会安装在 C:\Program Files(x86) 目录下
作者: ygqiang    时间: 2016-2-18 15:35

回复  ygqiang


    C:\Program Files\WinRAR 只是假设
话说64位的WinRAR不会安装在 C:\Program File ...
WHY 发表于 2016-2-18 11:44



    一般都是用32位的WinRAR软件。
作者: 穿越    时间: 2016-2-19 19:16

回复 15# ygqiang

64系统位安装64的RAR路径不变的,我本来就是64位系统




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