标题: [文件操作] [已解决]批处理根据密码表测试解压密码的问题? [打印本页]
作者: thp2008 时间: 2023-5-22 16:21 标题: [已解决]批处理根据密码表测试解压密码的问题?
长期下载了很多网上的文件,未及时整理,现在发现很多解压密码忘记了,对不上号,我想写个批处理,根据我自已的密码表测试解压密码。
折腾了半天,我写了个笨的,但是运行的时候,这一行的前面总是有个括号,导致运行不成功,删除 do 后面的括号又不行,这种格式应该如何写。- "%rar%" x -y -p%%a -o- "%~dp0%rarname%" "%~dp0ABCDEFG"
复制代码
不知道怎么判断那个密码是正确的,我就用了笨办法,判断是否存在解压出来的文件夹,有没有大神有更好的方法。- @echo off
- setlocal enabledelayedexpansion
- echo.
- set /p rarname=请输入要测试解压密码的压缩文件名称:
- echo.
- set "rar=C:\Program Files\WinRAR\WinRAR.exe"
- for /f "delims=" %%a in ('type "PassList.txt"') do (
- "%rar%" x -y -p%%a -o- "%~dp0%rarname%" "%~dp0ABCDEFG"
- if exist .\ABCDEFG ( echo 找到正确的解压密码:%%a ) else ( echo 错误的解压密码:%%a )
- endlocal
- )
复制代码
如果能不解压,只测试解压密码是否正确就更好了,但是我不知道,该如何写?
感谢!
作者: 77七 时间: 2023-5-22 17:22
- @echo off
- set "rar=C:\Program Files\WinRAR\WinRAR.exe"
- (for /f "delims=" %%i in ('dir /b /s /a-d *.rar *.zip') do (
- for /f "delims=" %%a in ('type "PassList.txt"') do (
- if not defined _"%%i" (
- "%rar%" t -p%%a "%%i" && (
- echo %%i %%a
- set _"%%i"=1
- )
- )
- )
- if not defined _"%%i" (
- echo %%i
- )
- ))>file_key.txt
- pause
复制代码
作者: thp2008 时间: 2023-5-22 17:53
回复 2# 77七
感谢您的多次帮助,我测试了一下。可以正常运行,最终可以输出正确的密码,就是有个问题,所有错误的密码,WinRAR会弹出图形错误弹窗,需要手工点关闭。我测试的密码较少,还好。如果较多,那就疯了,再帮忙看下,那个参数,可以去掉那个弹窗。非常感谢!
作者: thp2008 时间: 2023-5-22 17:58
本帖最后由 thp2008 于 2023-5-22 18:01 编辑
对了,我用的WinRAR版本是,6.21
如果你没有的话,这是官方商业版的下载地址:
https://www.win-rar.com/fileadmi ... inrar-x32-621sc.exe
https://www.win-rar.com/fileadmi ... inrar-x64-621sc.exe
商业版的,只要在网上随便找个Key文件,放在安装目录下,就自动激活了,没有广告。个人版的会有广告。
Key文件是不区分版本的,以前的老Key一直通用到现在,都是可以的。key文件的文件名,必须是:rarreg.key
里面的内容是文本的,网上大把。我就不发了。
作者: 77七 时间: 2023-5-22 18:02
本帖最后由 77七 于 2023-5-22 18:09 编辑
回复 3# thp2008
winrar.exe 同目录下有个rar.exe
如下,将第二行改为你的实际地址
- set "rar=C:\Program Files\WinRAR\Rar.exe"
复制代码
不过这个解压的文件类型好像有限
如果不满足,可以试下7z,看看有没有测试密码的命令行用法,其余代码应该都一样
作者: thp2008 时间: 2023-5-22 18:12
回复 thp2008
winrar.exe 同目录下有个rar.exe
如下,将第二行改为你的实际地址
不过这个解压的 ...
77七 发表于 2023-5-22 18:02
哦,原来有个命令行版的,我修改了,我的就是默认路径。现在不会弹窗了,也没有报错,一闪就完成了,file_key.txt为0字节。没有东西输出了。这是怎么回事
作者: thp2008 时间: 2023-5-22 18:18
好的,我自已研究一下先,方法我知道了,感谢!
作者: thp2008 时间: 2023-5-22 18:42
解决了,感谢!
不要改第一行,下面加个-y就好了,改了第一行,反而不好用了。- @echo off
- set "rar=C:\Program Files\WinRAR\WinRAR.exe"
- (for /f "delims=" %%i in ('dir /b /s /a-d *.rar *.zip') do (
- for /f "delims=" %%a in ('type "PassList.txt"') do (
- if not defined _"%%i" (
- "%rar%" -y t -p%%a "%%i" && (
- echo %%i %%a
- set _"%%i"=1
- )
- )
- )
- if not defined _"%%i" (
- echo %%i
- )
- ))>file_key.txt
- type file_key.txt
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |