Ścieżka katalogu w zmiennej środowiskowej jako argument polecenia CMD DIR

Odpowiedzi:

1

Tak, ponieważ jego wartość zawiera przestrzeń.

Interpreter, czyli Wiersz polecenia, traktuje przestrzeń jako separator między poleceniami.

Separatory są jednym z kilku znaki specjalne dla tłumacza ( cmd.exe ).

Nazywane są spacje z podwójnym cytowaniem uciekać znaki specjalne.

Innym sposobem ucieczki specjalnej postaci jest użycie karetki ^ przed nim, czyli przedrostek (tj. przedrostek) karetki do znaku specjalnego

Na przykład możesz to osiągnąć, wydając:

dir C:\Program^ Files\Python35\Scripts\

Zwróć uwagę na karetkę po „Programie”

Aby kontrastować i wyjaśniać, postać większa niż > jest także znakiem specjalnym dla wiersza polecenia. Jest to specjalny znak, ponieważ ma specjalną funkcję przekierowanie wyjścia to znaczy, że działa jako samodzielna komenda, mimo że jest tylko jednym znakiem.

Więc powinno się również uciekać.

Na przykład możesz ustawić monit, aby pojawił się jako orientacyjna strzałka, odpowiednio go uciekając:

prompt ^>

Spowoduje to:

Example screenshot to illustrate Special Character Escaping

Dobrą praktyką jest więc podwójne cytowanie argumentu, czyli wartości zmiennej, czyli "%Variable%" więc tłumacz nigdy oczekuje zamieszania w tym kontekście.

w17t
źródło
0

Argument należy ująć w podwójne cudzysłowy, ponieważ dana ścieżka zawiera spację:

>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
...
handle
źródło