¿Cómo hago para que se muestren signos de exclamación usando eco?

¿Cómo hago para que se muestren signos de exclamación usando eco?

Hoy temprano, continuaba creando un descifrador de contraseñas RAR. Lo estaba probando en un archivo RAR de prueba y la contraseña era solo un signo de exclamación, pero cuando uso mi Decryptor todo lo que dice es simplemente "Echo ha sido desactivado". El error se encuentra en la parte inferior del código, al lado de donde dice "eco".

Esta es la codificación para RAR Password Decryptor que he hecho hasta ahora (y si está bien, ¿pueden decirme más errores y darme algunos consejos, gracias a la gente)?

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 ===========================

Respuesta1

Si tiene problemas echopara funcionar !, entonces tieneHabilitar expansión retrasadacolocar.

SiHabilitar expansión retrasadase establece, luego !se trata como un carácter especial yhay que escaparcon ^.

^debe usarse dos veces ya que también es un carácter especial.

Escapar de los signos de exclamación

Cuando el shell se ejecuta en modo EnableDelayedExpansion, el comando ! El carácter se usa para denotar una variable y, por lo tanto, se debe utilizar un carácter de escape (dos veces). Si desea tratarlo como un carácter normal, debe hacer esto:

^^!


Sin EnableDelayedExpansion:

@echo off
echo 1q2w!3e

Producción:

1q2w!3e

ConEnableDelayedExpansion y sin escapar:

@echo off
Setlocal EnableDelayedExpansion
echo 1q2w!3e

Producción:

1q2w3e

Observe ladesaparecido !en la salida.


ConEnableDelayedExpansion y escapando:

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

Producción:

1q2w!3e

Habilitar expansión retrasadase puede configurar de tres maneras:

  • Usar Setlocal EnableDelayedExpansionen un archivo por lotes
  • Empezando cmdpor el /vinterruptor.
  • En el registro bajo HKLMoHKCU
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"Expansión retrasada"= (REG_DWORD)
1=habilitado 0=deshabilitado (predeterminado)

FuentesHabilitar expansión retrasada,Caracteres de escape, delimitadores y comillas

información relacionada