Команда Windows echo не может отобразить заданную пользователем переменную

StackOverflow https://stackoverflow.com/questions/1884071

Вопрос

Что я сделал, чтобы испортить свою командную оболочку?Windows XP Pro, откройте окно cmd и выполните:

C:\>set tt = name

C:\>set tt
tt = name

C:\>echo %tt%
%tt%

C:\>echo %time%
14:13:28.67

Команда echo по какой-то причине не работает.Я могу просто отлично отображать встроенные переменные.Попробовал это на другом компьютере, и это работает так, как ожидалось

Это было полезно?

Решение

В set команда не содержит пробелов.Правильный синтаксис был бы следующим:

set tt=name

То, что вы сделали в своем примере, - это установили переменную окружения tt<space>.Имея это в виду, вы можете попробовать это:

echo %tt%

и посмотрите на свой результат.

Другие советы

Вы пробовали устанавливать переменную без пробела между равными?(установить tt=имя)

Наиболее одобренный ответ здесь, принятый давным-давно, утверждает, что:

"Тот set команда не занимает пробелов."

Но это неверно:В %tt % переменная действительно работает:Его можно установить и ссылаться на него.(Несмотря на это является сбивает с толку.)

Воспроизведенная проблема:

Действительно, на моем Win7:

C:\>set os
OS=Windows_NT

C:\>set tt = name
C:\>set tt2= name
C:\>set tt3=name
C:\>set tt
tt = name
tt2= name
tt3=name

Я попробовал и получил:

C:\>echo "%os%"
"Windows_NT"

C:\>echo "%tt3%"
"name"
C:\>echo "%tt2%"
" name"
C:\>echo "%tt%"
"%tt%"

Разрешенные дела:

Интуитивно ожидаемая переменная %tt% не установлен. Но %tt % устанавливается вместо:

C:\>echo "%tt %"
" name"

Более того, с пробелом в конце значения, set tt4 = name :

C:\>echo "%tt4 %"
" name "

Выводы:

В set команда не выполняет trim():

  • Пробел перед "=" включается в var_name.
  • Пробел после "=" включается в var_value.
  • Пробел в конце var_value входит в него.

С другой стороны:

  • Пробел в начале var_name не включен в него, что довольно нормально для аргументов командной строки в целом.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top