Board logo

标题: [文件操作] [已解决]批处理根据密码表测试解压密码的问题? [打印本页]

作者: thp2008    时间: 2023-5-22 16:21     标题: [已解决]批处理根据密码表测试解压密码的问题?

长期下载了很多网上的文件,未及时整理,现在发现很多解压密码忘记了,对不上号,我想写个批处理,根据我自已的密码表测试解压密码。
折腾了半天,我写了个笨的,但是运行的时候,这一行的前面总是有个括号,导致运行不成功,删除 do 后面的括号又不行,这种格式应该如何写。
  1. "%rar%" x -y -p%%a -o- "%~dp0%rarname%" "%~dp0ABCDEFG"
复制代码
不知道怎么判断那个密码是正确的,我就用了笨办法,判断是否存在解压出来的文件夹,有没有大神有更好的方法。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo.
  4. set /p rarname=请输入要测试解压密码的压缩文件名称:
  5. echo.
  6. set "rar=C:\Program Files\WinRAR\WinRAR.exe"
  7. for /f "delims=" %%a in ('type "PassList.txt"') do (
  8.        "%rar%" x -y -p%%a -o- "%~dp0%rarname%" "%~dp0ABCDEFG"
  9.        if exist .\ABCDEFG ( echo 找到正确的解压密码:%%a ) else ( echo 错误的解压密码:%%a )
  10.        endlocal
  11. )
复制代码
如果能不解压,只测试解压密码是否正确就更好了,但是我不知道,该如何写?
感谢!
作者: 77七    时间: 2023-5-22 17:22

  1. @echo off
  2. set "rar=C:\Program Files\WinRAR\WinRAR.exe"
  3. (for /f "delims=" %%i in ('dir /b /s /a-d *.rar *.zip') do (
  4. for /f "delims=" %%a in ('type "PassList.txt"') do (
  5. if not defined _"%%i" (
  6. "%rar%" t -p%%a "%%i" && (
  7. echo %%i %%a   
  8. set _"%%i"=1
  9. )
  10. )
  11. )
  12. if not defined _"%%i" (
  13. echo %%i
  14. )
  15. ))>file_key.txt
  16. 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
如下,将第二行改为你的实际地址
  1. 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就好了,改了第一行,反而不好用了。
  1. @echo off
  2. set "rar=C:\Program Files\WinRAR\WinRAR.exe"
  3. (for /f "delims=" %%i in ('dir /b /s /a-d *.rar *.zip') do (
  4. for /f "delims=" %%a in ('type "PassList.txt"') do (
  5. if not defined _"%%i" (
  6. "%rar%" -y t -p%%a "%%i" && (
  7. echo %%i %%a   
  8. set _"%%i"=1
  9. )
  10. )
  11. )
  12. if not defined _"%%i" (
  13. echo %%i
  14. )
  15. ))>file_key.txt
  16. type file_key.txt
  17. pause
复制代码





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