Sim, é porque seu valor contém espaço.
O intérprete, que é o Prompt de Comando, trata o espaço como separador entre os comandos.
Separadores são um dos vários caracteres especiais para o intérprete ( cmd.exe
).
Os espaços de aspas duplas são chamados de caracteres especiais de escape .
Outra maneira de escapar de um caractere especial é usar o sinal de intercalação ^
na frente dele, que é o prefixo (ou seja, prefixo) do 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 o Prompt de Comando. É um caractere 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 seu prompt para aparecer como uma seta indicativa escapando-o adequadamente:
prompt ^>
Resultaria em:
Portanto, é uma boa prática sempre citar duas vezes o argumento, que é o valor da variável, ou seja, "%Variable%"
para que o intérprete nunca espere uma confusão nesse contexto.