Sim, é porque seu valor contém espaço.
O interpretador, que é o Prompt de Comando, trata o espaço como separador entre os comandos.
Os separadores são um dos vários caracteres especiais para o interpretador ( cmd.exe
).
Espaços de cotação duplos são chamados de caracteres especiais .
Outra maneira de escapar de um caractere especial é usar o caret ^
na frente dele, que é o precursor (isto é, o prefixo) do careta para o caractere especial.
Por exemplo, você pode conseguir o mesmo emitindo:
dir C:\Program^ Files\Python35\Scripts\
Observe o cursor após "Programa"
Para contrastar e esclarecer, o caractere maior que >
também é um caractere especial para Prompt de Comando. É um caracter especial porque tem uma função especial de redirecionar a saída , ou seja, funciona como um comando próprio, apesar de ser apenas um caractere.
Por isso, também deve ser escapado.
Por exemplo, você pode definir o seu prompt para aparecer como uma seta indicativa, escapando corretamente:
prompt ^>
resultaria em:
Porisso,éumaboapráticasempreduplicaroargumento,queéovalordavariável,significando"%Variable%"
, portanto, o interpretador never espera uma confusão nesse contexto.