标题: [文件操作] [已解决]批处理如何使用WinRAR删除APK中的classes.dex? [打印本页]
作者: 穿越 时间: 2016-2-13 12:53 标题: [已解决]批处理如何使用WinRAR删除APK中的classes.dex?
本人是个小白,以前有个类似的脚本,硬盘坏了丢了,就想自己写个脚本,试着写了个,运行却无效,请帮看看哪里有问题:- @echo off
- COLOR 0A
- echo ======================================================================
- echo = 请输入 1 ^| 2 ^| 3 选择你需要的操作
- echo = 1. 删除 app文件夹 classes.dex
- echo = 2. 删除 priv-app文件夹 classes.dex
- echo = 3. 删除 framework文件夹 classes.dex
- echo ======================================================================
-
- set choice=
- set /p choice= 选择你的操作(Your choice):
- IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
- if /i "%choice%"=="1" goto app
- if /i "%choice%"=="2" goto priv-app
- if /i "%choice%"=="3" goto framework
- echo. 选择无效,请重新输入
- echo. Choice is invalid, please enter again
- echo.
- goto MENU1
-
- :app
- echo. 正在删除 app文件夹 classes.dex...
- WinRAR d "app\*.*" classes.dex
- goto OKorNo%ERRORLEVEL%
-
- :priv-app
- echo. 正在删除 priv-app文件夹 classes.dex...
- WinRAR d priv-app\-classes.dex
- goto OKorNo%ERRORLEVEL%
-
- :framework
- echo. 正在删除 framework文件夹 classes.dex...
- WinRAR-d-framework\-classes.dex
- goto OKorNo%ERRORLEVEL%
-
- :OKorNo0
- CLS
- echo. ---------------------------------------
- echo. 已删除完成!
复制代码
请大神指点,谢谢!
作者: ivor 时间: 2016-2-13 13:50
本帖最后由 ivor 于 2016-2-13 14:15 编辑
- :framework
- echo. 正在删除 framework文件夹 classes.dex...
- WinRAR-d-framework\-classes.dex
- goto OKorNo%ERRORLEVEL%
复制代码
命令开关 不要加-,后面两个call都没有提供压缩文件- 用法: rar <命令> -<参数 1> -<参数 N> <压缩文件> <文件...>
- <@列表文件...> <解压路径\>
复制代码
复制代码
PS:rar 不支持APK文件
作者: 穿越 时间: 2016-2-13 15:56
回复 2# ivor
APK其实就是个ZIP文件,RAR应该可先打开再删除里面的文件的,记得以前用过一个脚本实现过
作者: 穿越 时间: 2016-2-13 16:12
回复 2# ivor
改成这样- 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 编辑
- 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目录却不进行下一步操作,我改成这样:- 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- 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目录- path C:\Program Files\WinRAR;%path%
- 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% 就成功了,同时把脚本优化了下,请帮看看还有需改进的地方吗?- @echo off
- mode con cols=100 lines=30
- TITLE 删除dex
- COLOR 0A
- echo. -----------------------------------------------------------------
- echo. 确认各文件夹中文件放置正确
- echo. 确认各文件夹中无需备份文件
- echo. 准备好后按任意键继续...
- echo. Press any key to continue...
- echo. -----------------------------------------------------------------
- pause >NUL 2>NUL
- CLS
- path C:\Program Files\WinRAR;%path% pid %%i 1>nul 2>nul
-
- :MENU1
- CLS
- echo ======================================================================
- echo = 请输入 1 ^| 2 ^| 3 ^| 4 ^| 5 选择你需要的操作
- echo = 1. 删除 app文件夹 classes.dex
- echo = 2. 删除 priv-app文件夹 classes.dex
- echo = 3. 删除 framework文件夹 classes.dex
- echo = 4. 删除 framework与app 文件夹 classes.dex
- echo = 5. 退出
- echo ======================================================================
-
- set choice=
- set /p choice= 选择你的操作(Your choice):
- IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
- if /i "%choice%"=="1" goto app
- if /i "%choice%"=="2" goto priv-app
- if /i "%choice%"=="3" goto framework
- if /i "%choice%"=="4" goto frapp
- if /i "%choice%"=="5" goto EXIT
- echo. 选择无效,请重新输入
- echo. Choice is invalid, please enter again
- echo.
- goto MENU1
-
- :app
- echo. 正在删除 app文件夹 classes.dex...
- for /r .\app %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
- goto MENU1
-
- :priv-app
- echo. 正在删除 priv-app文件夹 classes.dex...
- for /r .\priv-app %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
- goto MENU1
-
- :framework
- echo. 正在删除 framework文件夹 classes.dex...
- for /r .\framework %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
- goto MENU1
-
- :frapp
- echo. 正在删除 framework/app 文件夹 classes.dex...
- for /r .\framework %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
- for /r .\app %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
- goto MENU1
-
- :EXIT
- exit
复制代码
作者: ivor 时间: 2016-2-17 21:50
本帖最后由 ivor 于 2016-2-17 22:01 编辑
回复 13# 穿越 - :MENU1
- set /p choice= 选择你的操作(Your choice):
- IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
- if /i "%choice%"=="1" call :delFile app
- if /i "%choice%"=="2" call :delFile priv-app
- if /i "%choice%"=="3" call :delFile framework
- if /i "%choice%"=="4" call :delFile frapp
- if /i "%choice%"=="5" goto :EOF
- goto MENU1
-
- :delFile folder
- echo. 正在删除 %1文件夹 classes.dex...
- for /r .\%1 %%a in (*.apk *.jar) do (WinRAR.exe d -inul "%%a" classes.dex)
- 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 |