Отображать восклицательные знаки (!) В сценарии командной строки с помощью EnableDelayedExpansion - PullRequest
1 голос
/ 03 апреля 2020

Выход этого пакетного сценария равен Hello!, как и ожидалось:

@echo off
echo Hello!

Однако, с включенным отложенным расширением, вывод теперь равен Hello:

@echo off
setlocal EnableDelayedExpansion
echo Hello!

Трюк это вставить endlocal непосредственно перед echo:

@echo off
setlocal EnableDelayedExpansion
...
endlocal
echo Hello!
setlocal EnableDelayedExpansion

Однако это утомительно. Согласно этой справке Microsoft , некоторые символы, такие как процент (%) и символ каретки (^), могут использоваться для экранирования (и, следовательно, печати) таких символов, как %, | и >.

Есть ли какой-либо символ экранирования для восклицательного знака (!), Не прибегая к уловке endlocal?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2020

попробуйте с двойной кареткой:

@echo off

setlocal enableDelayedExpansion

echo ^^!
0 голосов
/ 03 апреля 2020

Можно еще на шаг ответить на вопрос @ npocmaka, чтобы восклицательные знаки можно было отображать без последующего расширения.

@Echo Off & setlocal DisableDelayedExpansion
Set "/Ex=^^!"

Setlocal EnableDelayedExpansion
Echo(%/Ex%test%/Ex%

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...