에코를 사용하여 느낌표를 표시하는 방법

에코를 사용하여 느낌표를 표시하는 방법

오늘 초에는 RAR 비밀번호 해독기를 계속 만들고 있었습니다. 암호가 느낌표인 테스트 RAR 파일에서 테스트 중이었지만 Decryptor를 사용하면 "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있는 !경우EnableDelayedExpansion세트.

만약에EnableDelayedExpansion설정되면 !특수 문자로 처리되며탈출해야 한다와 함께 ^.

^특수문자이므로 두 번 사용해야 합니다.

느낌표 탈출

쉘이 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

EnableDelayedExpansion세 가지 방법으로 설정할 수 있습니다:

  • Setlocal EnableDelayedExpansion배치 파일에서 사용
  • cmd스위치 부터 시작합니다 /v.
  • HKLM또는 아래의 레지스트리에서HKCU
[HKEY_CURRENT_USER\Software\Microsoft\명령 프로세서]
"지연된 확장"= (REG_DWORD)
1=활성화 0=비활성화(기본값)

출처EnableDelayedExpansion,이스케이프 문자, 구분 기호 및 따옴표

관련 정보