Bagaimana cara membuat tanda seru menunjukkan menggunakan gema

1

Sebelumnya hari ini, saya terus membuat Decryptor Kata Sandi RAR. Saya sedang mengujinya pada file RAR uji dengan kata sandi hanya tanda seru tetapi ketika saya menggunakan Decryptor saya semua mengatakan hanya "Echo telah dimatikan". Bug ini terletak di bagian bawah pengkodean di sebelah tempat dikatakan "echo".

Ini adalah coding untuk Decryptor Kata Sandi RAR yang telah saya lakukan sejauh ini (dan jika tidak apa-apa, tolong beri tahu saya bug lagi dan beri saya beberapa tip terima kasih banyak orang).

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 ===========================
lolz189
sumber
Oh 18 baris terakhir permintaan maaf saya. XD
lolz189
Masalahnya adalah bagaimana saya membuat tanda seru dilihat dalam gema karena tanda seru mematikan gema ketika saya ingin tanda seru dilihat (echo on) alih-alih menjadi kode.
lolz189
Oh wow lol apa yang salah dengan saya, saya tanda seru bukan tanda kutip lol permintaan maaf saya lagi. XD
lolz189
1
echo 1q2w!3eoutput 1q2w!3e. Tolong jelaskan apa masalahnya sebenarnya
DavidPostill
3
Oke, Anda tahu bahwa pertanyaan Anda bermasalah. Anda melambaikan tangan dan mengatakan "bug ada dalam kode" tanpa mengatakan di mana. Anda menggunakan nama yang salah untuk karakter yang sedang Anda bicarakan. Anda melaporkan masalah yang tidak dapat kami reproduksi. Berhenti menempel komentar, dan perbaiki pencarian Anda dengan mengeditnya . Juga, jika Anda memiliki masalah dalam satu baris, Anda tidak perlu memposting 68 baris. Coba edit file batch Anda. Hapus bongkahan besar. Jika masalah berlanjut, posisikan skrip pendek yang bermasalah. Jika masalah hilang, kode terakhir yang Anda hapus mungkin menjadi penyebab masalah.
Scott

Jawaban:

4

Jika Anda memiliki masalah echoing !maka Anda memiliki EnableDelayedExpansion set.

Jika EnableDelayedExpansion diatur maka !diperlakukan sebagai karakter khusus dan harus diloloskan dengan ^.

^ harus digunakan dua kali karena juga merupakan karakter khusus.

Melarikan diri dari tanda seru

Ketika shell berjalan dalam mode EnableDelayedExpansion! karakter digunakan untuk menunjukkan variabel dan karenanya harus diloloskan (dua kali) jika Anda ingin memperlakukannya sebagai karakter biasa:

^^!


Tanpa EnableDelayedExpansion:

@echo off
echo 1q2w!3e

Keluaran:

1q2w!3e

Dengan EnableDelayedExpansion dan tanpa melarikan diri :

@echo off
Setlocal EnableDelayedExpansion
echo 1q2w!3e

Keluaran:

1q2w3e

Perhatikan output yang hilang ! .


Dengan EnableDelayedExpansion dan melarikan diri :

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

Keluaran:

1q2w!3e

EnableDelayedExpansion dapat diatur dalam tiga cara:

  • Menggunakan Setlocal EnableDelayedExpansiondalam file batch
  • Mulai cmddengan /vsakelar.
  • Dalam registri di bawah HKLMatauHKCU
[HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor]
"DelayedExpansion" = (REG_DWORD)
1 = diaktifkan 0 = dinonaktifkan (default)

Sumber EnableDelayedExpansion , Escape Karakter, Pembatas dan Kutipan

DavidPostill
sumber