Как вы подавляете расширение переменных среды в DOS и Windows CMD? - PullRequest
8 голосов
/ 13 января 2010

Это упрощенный пример с измененными именами переменных того, что я хочу сделать. Также для простоты я показываю версию командной строки, а не версию файла bat.

Я делаю следующее.

> echo %foo%

%foo%

Однако, если foo является допустимой переменной среды, я не получаю желаемый вывод (%foo%) из-за расширения переменной среды.

> set foo=bar
> echo %foo%
> echo %%foo%%

bar
%bar%

Теперь у меня есть хак, чтобы сделать это (следующий пример), но мне было интересно, есть ли более чистый способ либо вывести символ %, либо подавить расширение переменной среды.

> set foo=bar
> set percent=%
> echo %percent%foo%percent%

%foo%

Кроме того, если требуемое решение отличается в файле bat (например, %%, а не % или %1%, а не %1), пожалуйста, сообщите мне.

Мой фактический вариант использования находится в bat-файле с SETX для установки глобальных переменных среды, которые зависят от другой переменной среды, которая будет расширяться внутри них, но мне любопытно, как расширяться в DOS или cmd.

Ответы [ 2 ]

6 голосов
/ 13 января 2010

в пакетном файле echo %% foo %% сгенерирует% foo%.

c:\01Temp>type foo.bat
@echo %%foo%%

c:\01Temp>foo
%foo%

c:\01Temp>
1 голос
/ 13 января 2010

В пакетном файле используйте два %% с, например ::

set foo=1
echo %%foo%%

... повторяет "% foo%", а не "1". Я не знаю, как отключить его в немедленном режиме (например, не в пакетном файле).

...