Board logo

标题: [文件操作] 【已解决】WinRAR 命令行下,如何先判断解压密码是否正解,再继续 [打印本页]

作者: thp2008    时间: 2022-9-15 18:08     标题: 【已解决】WinRAR 命令行下,如何先判断解压密码是否正解,再继续

本帖最后由 thp2008 于 2022-9-15 20:39 编辑

WinRAR 命令行下 如何写一个判断密码是否正解的批处理。
  1. winrar 判断解压密码是否正解  正确下面这行  不正确 goto end
  2. for /f "delims=" %%i in ('dir /b /s *.rar') do WinRAR.exe  x -y -p%pass% -o- "%%i"   "%%~dpi"
  3. :end
复制代码
因为下面的代码里面有删除的命令,如果密码不正解,上面没有解压成功,下面就直接把压缩文件给删除了。所以我想在前面加个判断的解压密码的过程,不知能否实现。不想加个暂停,人工判断,这样麻烦,因为量大,想自动化判断,各位大神挑战一下。十分感谢!
作者: WindCat    时间: 2022-9-15 18:22

winrar的命令行版本对于相关命令都有返回值,建议自行查阅其手册,以避免版本不同带来的差异。
通常来说,命令正常执行时返回值=0
作者: thp2008    时间: 2022-9-15 18:31

本帖最后由 thp2008 于 2022-9-15 18:44 编辑
winrar的命令行版本对于相关命令都有返回值,建议自行查阅其手册,以避免版本不同带来的差异。
通常来说, ...
WindCat 发表于 2022-9-15 18:22


感谢指点,我用的是这个官方最新的这个商业版本64位:
  1. https://www.win-rar.com/fileadmin/winrar-versions/winrar/winrar-x64-611sc.exe
复制代码
我看了一下,说明书,参数的使用介绍都有,没有看到那里有返回值的。

我在网上搜到有返回值的意义:

返回值
~~~~~~

   RAR 成功操作后返回 0 。非 0 返回码意味着操作由于某种错误被取消:

    255   用户中断         用户中断操作

      9   创建错误         创建文件错误

      8   内存错误         没有足够的内存进行操作

      7   用户错误         命令行选项错误

      6   打开错误         打开文件错误

      5   写错误           写入磁盘错误

      4   被锁定压缩文件   试图修改先前使用 'k' 命令锁定的压缩文件

      3   CRC 错误         解压缩时发生一个 CRC 错误

      2   致命错误         发生一个致命错误

      1   警告             没有发生致命错误

      0   成功             操作成功

但没有找到,如何获得返回值的方法。
作者: flashercs    时间: 2022-9-15 19:20

  1. for /f "delims=" %%i in ('dir /b /s *.rar') do WinRAR.exe  x -y -p%pass% -o- "%%i"   "%%~dpi"&&echo 成功:"%%i"
复制代码

作者: yakeyun    时间: 2022-9-15 20:26

本帖最后由 yakeyun 于 2022-9-15 20:48 编辑

回复 3# thp2008

任何代码都可以放到下面的语句中执行,命令返回值就是不同结果的反馈值。记住一点,反馈值显示的上一句,一定要是测试语句,不要后面有多余的语句。
分别执行一个错误的密码和一个正确的密码,把结果获取到,就可以作为参考了。
  1. @echo off
  2. WinRAR.exe  x -y -p%pass% -o- "%path%"   ".\"
  3. echo,命令返回值为:%errorlevel%
  4. pause>nul
复制代码


测试得出结果,正确解压出来反馈值为0,错误反馈值为10。
作者: thp2008    时间: 2022-9-15 20:38

感谢二位大神的帮助,原理,懂了,测试成功。再次表示感谢!
作者: fzp070    时间: 2022-9-15 23:44

我之前试过7z和BandZip,是通过输出Log信息到out.txt,从中判断是否密码正确,如7z解压成功的信息中 必含有Everything is Ok这句话,以此判断。
估计Winrar也有类似输出信息,可以观察下。
  1. 7z.exe x C:\1\A4.7z -p"2234"" -oC:\1\ -aoa -bse0 -bsp2>out.txt
复制代码

作者: thp2008    时间: 2022-9-16 00:26

我之前试过7z和BandZip,是通过输出Log信息到out.txt,从中判断是否密码正确,如7z解压成功的信息中 必含有 ...
fzp070 发表于 2022-9-15 23:44



    我现在用的rar,7z的我也可以研究一下,感谢提供帮助。
作者: holley    时间: 2022-9-16 11:03

回复 5# yakeyun
不同电脑,反馈值不一样? 我这边%errorlevel% 正确也是0  错误是11
作者: thp2008    时间: 2022-9-16 11:19

回复  yakeyun
不同电脑,反馈值不一样? 我这边%errorlevel% 正确也是0  错误是11
holley 发表于 2022-9-16 11:03


我测试了,11是密码错误,10是目标文件已存在。就是已经解压过一次了,再解压第二次,就会出现10。
作者: fzp070    时间: 2022-9-19 23:06

本帖最后由 fzp070 于 2022-9-19 23:09 编辑

回复 10# thp2008


    比较奇怪,在我的电脑Win11系统,6.11版本Winrar,代码如下,压缩包密码123 4。
用5楼的方法,假压缩包:直接将txt后缀改为压缩包后缀 返回1,直接改.exe为压缩包后缀 返回3,这些没问题。
但密码正确返回0,密码错误也是返回0,这就没法判断解压密码是否正确了。在我电脑此方法无效。比较奇怪。
  1. @echo off
  2. cd /d "%cd%"
  3. WinRAR.exe  x -y -p"123 4" -o- "123 4.7z"   ".\"
  4. echo,命令返回值为:%errorlevel%
  5. pause
复制代码
另外一个问题是,每次运行,会弹一个小确认框,虽一闪而过,但感觉不好,有什么方法让其不显示吗?
作者: fzp070    时间: 2022-9-19 23:17

回复 10# thp2008

关于密码正确和错误均返回0的问题,找到原因了,只有对rar后缀的压缩包,密码错误才返回11,对7z压缩包 密码错误和正确 均返回0。无语了!




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