Come faccio a mostrare i punti esclamativi usando echo


1

Oggi, stavo continuando a creare un decrittatore di password RAR. Lo stavo testando su un file RAR di prova con la password che era solo un punto esclamativo ma quando uso il mio Decryptor tutto ciò che dice è solo "Eco è stato disattivato". Il bug si trova nella parte inferiore della codifica accanto a dove dice "echo".

Questa è la codifica per RAR Password Decryptor che ho fatto finora (e se va bene puoi dirmi altri bug e darmi qualche consiglio grazie 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 ===========================

Oh diciottesima riga, mi scuso. XD
lolz189,

Inoltre, il problema è come posso fare in modo che i punti esclamativi vengano visualizzati in eco perché i punti esclamativi disattivano l'eco quando voglio che i punti esclamativi vengano visualizzati (eco attivo) anziché essere un codice.
lolz189,

Oh wow lol cosa c'è che non va in me menziono un punto esclamativo non un segno di virgoletta lol ancora le mie scuse. XD
lolz189,

1
echo 1q2w!3euscite 1q2w!3e. Spiega qual è il vero problema
DavidPostill

3
OK, sai che la tua domanda ha dei problemi. Agiti le mani e dici "il bug è nel codice" senza dire dove. Usi il nome sbagliato per il personaggio di cui stai parlando. Stai segnalando un problema che non possiamo riprodurre. Smetti di aggiungere commenti e correggi la tua missione modificandola . Inoltre, se si riscontra un problema in una riga, non è necessario pubblicare 68 righe. Prova a modificare il tuo file batch. Elimina grossi pezzi. Se il problema persiste, pubblica un breve script che presenta il problema. Se il problema scompare, l'ultimo codice eliminato potrebbe essere stato la causa del problema.
Scott,

Risposte:


4

Se siete avere problemi echoing !allora avete enabledelayedexpansion set.

Se EnableDelayedExpansion è impostato, !viene considerato come un carattere speciale e deve essere salvato con ^.

^ deve essere usato due volte in quanto è anche un personaggio speciale.

Escaping Exclamation mark

Quando la shell è in esecuzione in modalità EnableDelayedExpansion il! carattere viene usato per indicare una variabile e quindi deve essere evaso (due volte) se si desidera trattarlo come un carattere normale:

^^!


Senza EnableDelayedExpansion:

@echo off
echo 1q2w!3e

Produzione:

1q2w!3e

Con EnableDelayedExpansion e senza fuga :

@echo off
Setlocal EnableDelayedExpansion
echo 1q2w!3e

Produzione:

1q2w3e

Si noti che manca ! nell'output.


Con EnableDelayedExpansion e in fuga :

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

Produzione:

1q2w!3e

EnableDelayedExpansion può essere impostato in tre modi:

  • Utilizzo Setlocal EnableDelayedExpansionin un file batch
  • Partendo cmdcon l' /vinterruttore.
  • Nel registro sotto HKLMoHKCU
[HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor]
"DelayedExpansion" = (REG_DWORD)
1 = abilitato 0 = disabilitato (impostazione predefinita)

Sorgenti EnableDelayedExpansion , Escape Character, Delimiters and Quotes

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.