Se você tiver problemas echo
ing !
, terá o conjunto EnableDelayedExpansion .
Se EnableDelayedExpansion estiver definido, !
será tratado como um caractere especial e deverá ser ignorado com ^
.
^
deve ser usado duas vezes, pois também é um caractere especial.
Escaping Exclamation marks
When the shell is running in EnableDelayedExpansion mode the ! character is used to denote a variable and so must be escaped (twice) if you wish to treat it as a regular character:
^^!
Sem EnableDelayedExpansion
:
@echo off
echo 1q2w!3e
Saída:
1q2w!3e
Com EnableDelayedExpansion
e sem escape :
@echo off
Setlocal EnableDelayedExpansion
echo 1q2w!3e
Saída:
1q2w3e
Observe que está faltando !
na saída.
Com EnableDelayedExpansion
e escapando :
@echo off
Setlocal EnableDelayedExpansion
echo 1q2w^^!3e
Saída:
1q2w!3e
EnableDelayedExpansion pode ser definido de três maneiras:
- Usando
Setlocal EnableDelayedExpansion
em um arquivo em lote - Iniciando
cmd
com a opção/v
. - No registro em
HKLM
ouHKCU
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor] "DelayedExpansion"= (REG_DWORD) 1=enabled 0=disabled (default)
Fontes EnableDelayedExpansion , Escape Characters, Delimiters and Quotes