Come può una variabile d'ambiente Windows / CMD essere utilizzata come argomento per il comando incorporato di CMD dir ?
>echo %pythonpath%
C:\Program Files\Python35\Scripts\
>dir %pythonpath%
The system cannot find the path specified.
Come può una variabile d'ambiente Windows / CMD essere utilizzata come argomento per il comando incorporato di CMD dir ?
>echo %pythonpath%
C:\Program Files\Python35\Scripts\
>dir %pythonpath%
The system cannot find the path specified.
Risposte:
Sì, è perché il suo valore contiene spazio.
L'interprete, ovvero Prompt dei comandi, considera lo spazio come separatore tra i comandi.
I separatori sono uno dei numerosi caratteri speciali per l'interprete ( cmd.exe
).
Gli spazi con virgolette doppie sono chiamati caratteri speciali di escape .
Un altro modo per sfuggire a un personaggio speciale è usare il cursore ^
davanti ad esso, ovvero anteporre (cioè il prefisso) al personaggio speciale.
Ad esempio, puoi ottenere lo stesso emettendo:
dir C:\Program^ Files\Python35\Scripts\
Nota il cursore dopo "Programma"
Per contrastare e chiarire, il carattere maggiore di >
è anche un personaggio speciale per il prompt dei comandi. È un carattere speciale perché ha una funzione speciale di reindirizzamento dell'output , ovvero funziona come un comando a sé stante nonostante sia solo un singolo carattere.
Quindi dovrebbe anche essere evitato.
Ad esempio, puoi impostare il tuo prompt in modo che appaia come una freccia indicativa sfuggendolo correttamente:
prompt ^>
Si tradurrebbe in:
Quindi è buona norma citare sempre due volte l'argomento, ovvero il valore della variabile, il che significa che "%Variable%"
l'interprete non si aspetta mai una confusione in quel contesto.
L'argomento deve essere racchiuso tra virgolette doppie poiché il percorso in questione contiene uno spazio:
>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
...