标题: [文件操作] 【已解决】WinRAR 命令行下,如何先判断解压密码是否正解,再继续 [打印本页]
作者: thp2008 时间: 2022-9-15 18:08 标题: 【已解决】WinRAR 命令行下,如何先判断解压密码是否正解,再继续
本帖最后由 thp2008 于 2022-9-15 20:39 编辑
WinRAR 命令行下 如何写一个判断密码是否正解的批处理。- winrar 判断解压密码是否正解 正确下面这行 不正确 goto end
- for /f "delims=" %%i in ('dir /b /s *.rar') do WinRAR.exe x -y -p%pass% -o- "%%i" "%%~dpi"
-
- :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位:- 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
- 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
任何代码都可以放到下面的语句中执行,命令返回值就是不同结果的反馈值。记住一点,反馈值显示的上一句,一定要是测试语句,不要后面有多余的语句。
分别执行一个错误的密码和一个正确的密码,把结果获取到,就可以作为参考了。- @echo off
-
- WinRAR.exe x -y -p%pass% -o- "%path%" ".\"
-
- echo,命令返回值为:%errorlevel%
-
- 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也有类似输出信息,可以观察下。- 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,这就没法判断解压密码是否正确了。在我电脑此方法无效。比较奇怪。- @echo off
- cd /d "%cd%"
- WinRAR.exe x -y -p"123 4" -o- "123 4.7z" ".\"
- echo,命令返回值为:%errorlevel%
- pause
复制代码
另外一个问题是,每次运行,会弹一个小确认框,虽一闪而过,但感觉不好,有什么方法让其不显示吗?
作者: fzp070 时间: 2022-9-19 23:17
回复 10# thp2008
关于密码正确和错误均返回0的问题,找到原因了,只有对rar后缀的压缩包,密码错误才返回11,对7z压缩包 密码错误和正确 均返回0。无语了!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |