在 Windows 批处理文件中,有没有办法检查压缩文件的 7zip 密码是否正确?
我想检查它是否成功,继续执行脚本(使用调用或转到例程),如果它不成功则状态密码不正确然后会循环回来再次询问密码。
我知道我可以使用测试标志,7z t -p%password% <path>
但不确定如何读取结果并自动确定它是否正确。
谢谢。
答案1
您可以使用条件执行/运算符&&
和||
:
@echo off
cd /d "%~dp0" & title <nul & title ..\%~nx0
:Ask_Again
set /p "password= Enter Passowrd: "
"C:\Program Files\7-Zip\7z.exe" t -p%password% Q1543606.7z >nul 2>nul && (
echo/Your Password input: zOk! & goto :Next
) || set Password=<nul && goto :Ask_Again
:Next
rem :: So, continue...
rem :: Do more here...
Goto :Eof
如果你在 Windows 10 上使用它,你还可以使用一些额外的答案/代码,并利用ANSI 转义码支持屏蔽/隐藏密码输入类型...
下一个代码旨在展示如何在单个文件/执行中一起使用上述答案的选项来回答您的问题。
@echo off && setlocal enabledelayedexpansion
cd/d "%~dp0" & color 0a & title <nul && title ..\%~nx0
set "_full_7z_path=F:\SUPER_USER\Q1543606\Q1543606.7z"
"%__APPDIR__%Certutil.exe" -decode -f "%~f0" "%temp%\2L.bin" >nul 2>&1 & goto :Ask_Again
-----BEGIN CERTIFICATE----- G1sxRhtbMEobWzFGG1swSg0K -----END CERTIFICATE-----
:Ask_Again
set /p "=_" < nul > "Enter password"
findstr /A:1E /V "^$" "Enter password" nul >con
del "Enter password" && set /P "password="
color 0a & type "%temp%\2l.bin"
%__APPDIR__%doskey.exe /reinstall
%__APPDIR__%doskey.exe /listsize=0
%__APPDIR__%doskey.exe /listsize=50
"C:\Program Files\7-Zip\7z.exe" t -p!password! "%_full_7z_path%" >nul 2>&1 && (
echo/Your Password input: zOk^!! & goto :Next
) || set Password=<nul & goto :Ask_Again
:Next
rem :: So, continue...
rem :: Do more here...
del /q /f "%temp%\2l.bin"
set password=<nul && endlocal && goto :Eof
- 您可以在下面看到结果/输出:
观察:请记住,如果您的密码包含任何特殊字符,则可能需要转义,还要分别输入完整路径file.7z
和7z.exe
......
- 关于此bat/cmd中Base64字符串在文件中解码“
%temp%\2l.bin