如何使用 echo 使感嘆號顯示

如何使用 echo 使感嘆號顯示

今天早些時候,我繼續製作 RAR 密碼解密器。我正在測試 RAR 檔案上對其進行測試,密碼只是一個感嘆號,但是當我使用我的 Decryptor 時,它只顯示「Echo 已關閉」。該錯誤位於程式碼底部“echo”旁邊。

這是我到目前為止所做的 RAR 密碼解密器的編碼(如果可以的話,您能告訴我更多的錯誤並給我一些提示嗎,謝謝大家)。

REM ============================================================
REM errorcode401.blogspot.in
@echo off
title Decryptor
mode con: cols=50 lines=50
copy "C:\Program Files\WinRAR\Unrar.exe"
SET PSWD=0
SET DEST=%TEMP%\%RANDOM%
MD %DEST%
:RAR
cls
echo ----------------------------------------------
echo                   GET DETAIL
echo ----------------------------------------------
echo.
SET/P "NAME=Enter File Name : "
IF "%NAME%"=="" goto NERROR
goto GPATH
:NERROR
echo ----------------------------------------------
echo                      ERROR
echo ----------------------------------------------
echo Sorry you can't leave the line blank.
pause
goto RAR
:GPATH
SET/P "PATH=Enter Full Path : "
IF "%PATH%" == "" goto PERROR
goto NEXT
:PERROR
echo ----------------------------------------------
echo                      ERROR
echo ----------------------------------------------
echo Sorry you can't leave the line blank.
pause
goto RAR
:NEXT
IF EXIST "%PATH%\%NAME%" GOTO START
goto PATH
:PATH
cls
echo ----------------------------------------------
echo                     ERROR
echo ----------------------------------------------
echo This file does not Exist.
pause
goto RAR
:START
SET /A PSWD=%PSWD%+1
echo 1q2w!3e
UNRAR E -INUL -P%PSWD% "%PATH%\%NAME%" "%DEST%"
IF /I %ERRORLEVEL% EQU 0 GOTO FINISH
GOTO START
:FINISH
RD %DEST% /Q /S
Del "Unrar.exe"
cls
echo ----------------------------------------------
echo                     CRACKED
echo ----------------------------------------------
echo.
echo PASSWORD FOUND!
echo FILE  = %NAME%
echo CRACKED PASSWORD = %PSWD%
pause>NUL
exit
REM ===========================

答案1

如果您遇到問題echo!那麼您有啟用延遲擴展放。

如果啟用延遲擴展被設置,然後!被視為特殊字元並且必須逃脫^

^必須使用兩次,因為它也是一個特殊字元。

轉義感嘆號

當 shell 在 EnableDelayedExpansion 模式下運作時,!字符用於表示變量,因此必須對其進行轉義(兩次),如果您希望將其視為常規字符,您應該這樣做:

^^!


沒有EnableDelayedExpansion

@echo off
echo 1q2w!3e

輸出:

1q2w!3e

EnableDelayedExpansion 並且無法逃脫:

@echo off
Setlocal EnableDelayedExpansion
echo 1q2w!3e

輸出:

1q2w3e

注意遺失的 !在輸出中。


EnableDelayedExpansion 和逃跑:

@echo off
Setlocal EnableDelayedExpansion
echo 1q2w^^!3e

輸出:

1q2w!3e

啟用延遲擴展可以透過三種方式設定:

  • Setlocal EnableDelayedExpansion在批次檔中使用
  • cmd從開關開始/v
  • 在註冊表中HKLMHKCU
[HKEY_CURRENT_USER\Software\Microsoft\指令處理器]
「延遲擴展」= (REG_DWORD)
1=啟用 0=停用(預設)

來源啟用延遲擴展,轉義字元、分隔符號和引號

相關內容