如何使用 echo 显示感叹号

如何使用 echo 显示感叹号

今天早些时候,我继续制作 RAR 密码解密器。我在一个测试 RAR 文件上测试它,密码只是一个感叹号,但当我使用我的解密器时,它只显示“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=禁用(默认)

来源启用延迟扩展转义符、分隔符和引号

相关内容