![如何使用 echo 显示感叹号](https://linux22.com/image/1447361/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20echo%20%E6%98%BE%E7%A4%BA%E6%84%9F%E5%8F%B9%E5%8F%B7.png)
今天早些时候,我继续制作 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
。- 在注册表中
HKLM
或HKCU
[HKEY_CURRENT_USER\Software\Microsoft\命令处理器] “延迟扩展”= (REG_DWORD) 1=启用 0=禁用(默认)