Caminho do diretório na variável de ambiente como argumento para o comando CMD DIR

0

Como uma variável de ambiente Windows / CMD pode ser usada como argumento para Comando dir do CMD embutido ?

>echo %pythonpath%
C:\Program Files\Python35\Scripts\

>dir %pythonpath%
The system cannot find the path specified.
    
por handle 09.10.2016 / 09:12

2 respostas

1

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.

    
por 09.10.2016 / 09:51
0

O argumento precisa ser colocado entre aspas duplas, pois o caminho em questão contém um espaço:

>dir "%pythonpath%"
 Volume in drive C is System
 Volume Serial Number is 0000-ABCD

 Directory of C:\Program Files\Python35\Scripts

09.10.2016  08:13    <DIR>          .
09.10.2016  08:13    <DIR>          ..
23.09.2016  14:59            98.145 autopep8.exe
...
    
por 09.10.2016 / 09:12