Как отобразить переменную среды, содержащую '&' в пакете DOS? - PullRequest
3 голосов
/ 21 сентября 2011

Когда я печатаю:

set hi=Hello^&World!
echo %hi%

it print Привет и скажи мне, что Мир - это не команда

Я хочу, чтобы он печатал Hello & World!

Как это сделать?

Ответы [ 3 ]

18 голосов
/ 21 сентября 2011

Это работает для меня:

set "hi=Hello^&World!"
echo %hi%

Выходы

Hello&World!
4 голосов
/ 22 сентября 2011

Единственный безопасный способ отобразить содержимое переменной - использовать отсроченное расширение здесь.
Если используется процентное расширение, оно зависит от содержимого в случае сбоя.

set "var1=Hello ^& World"
set "var2=Hello & World"
setlocal EnableDelayedExpansion
echo !var1!
echo !var2!
echo %var1%
echo %var2% -- fails

Отсроченное расширение более полезно, так как не интерпретирует никаких специальных символов.
Больше информации на SO: Как работает парсер

2 голосов
/ 21 сентября 2011

только

echo Hello ^& World!

работает

EDIT поэтому проблема не в команде ECHO, а в присвоении переменной, как правильно заметил @Bali.

...