Pergunta

O que eu fiz para estragar a minha shell CMD? Windows XP Pro, abra uma janela cmd e fazer:

C:\>set tt = name

C:\>set tt
tt = name

C:\>echo %tt%
%tt%

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

O comando echo não funciona por algum motivo. Posso refletem o bem variáveis ??internas. Tentou fazê-lo em outro computador e que funciona como o esperado

Foi útil?

Solução

O comando set não leva espaços. A sintaxe apropriada seria:

set tt=name

O que você fez no seu exemplo é definir um tt<space> ambiente variável. Com isso em mente, você pode tentar o seguinte:

echo %tt%

e veja sua saída.

Outras dicas

Você tentou definir a variável sem espaço entre os iguais? (Conjunto tt = nome)

A resposta mais upvoted aqui, aceitou muito atrás, afirma que:

"O comando set não leva espaços."

Mas isso não é correto: A variável %tt % realmente funciona: Pode ser definido e referenciado. (Apesar de é confundindo.)

Problema reproduzida:

Na verdade, no meu 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

Eu tentei e tenho:

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

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

casos resolvidos:

O %tt% variável intuitivamente esperado não está definido. Mas %tt % é definido em vez disso:

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

Ainda mais, com um espaço no final do valor, set tt4 = name :

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

Conclusões:

O comando set não trim():

  • O espaço antes "=" está incluído para o var_name.
  • O espaço após "=" está incluído para o var_value.
  • O espaço no final do var_value está incluída a ele.

Por outro lado:

  • O espaço no início da var_name não está incluída a ele, que é bastante normal para os argumentos da linha de comando em geral.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top