Windowsバッチファイルで、zipファイルの7Zipパスワードが正しいかどうかを確認する方法はありますか?
成功したかどうかを確認し、スクリプトを続行します(callまたはgotoルーチンを使用)。成功しなかった場合は、状態パスワードが正しくないため、ループバックしてパスワードを再度要求します。
テストフラグを使用できることはわかっています7z t -p%password% <path>
しかし、結果を読み取り、それが正しいかどうかを自動化する方法がわかりません。
ありがとう。
条件付き実行/演算子&&
および||
を使用できます。
@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エスケープコードサポートを利用してパスワードの入力タイプをマスク/非表示にすることもできます...
ユーザーがパスワードを入力した使用済み行を削除/削除するには、@ LotPingsからこの-のソリューションを使用できます。 回答
入力したコマンドラインの履歴をDoskey
buffers/historyからクリアして(矢印、F1、F3など)押したときに表示されないようにするには、 @ It Was n't Me in this answerからの解決策
次のコードは、上記の回答のオプションを1つのファイル/実行で一緒に使用して質問に回答する方法を示すことを目的としています。
@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
Obs.:パスワードに特殊文字が含まれている場合はエスケープする必要がある場合があることを忘れないでください。また、それぞれfile.7z
と7z.exe
へのフルパスを入力してください。 ..
%temp%\2l.bin
でデコードされたこのbat/cmdのBase64の文字列についてさらに読む:
[√] Doskey
[√] Findstr
[√] Goto:Label
[√] エスケープ文字
[√] 条件付き実行|| && ...
[√] Ansiエスケープコード