环境变量中的目录路径作为 CMD 命令 DIR 的参数

环境变量中的目录路径作为 CMD 命令 DIR 的参数

如何Windows/CMD 环境变量用作论据CMD 的内置 dir 命令

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

>dir %pythonpath%
The system cannot find the path specified.

答案1

是的,因为它的值包含空间。

解释器,即命令提示符将空格视为命令之间的分隔符。

分隔符是特殊字符对于解释器来说(cmd.exe)。

双引号空格称为逃跑特殊字符。

转义特殊字符的另一种方法是使用^其前面的插入符号,即将插入符号添加到特殊字符的前面(即前缀)。

例如,您可以通过发出以下命令实现相同目的:

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

请注意“Program”后面的插入符号

为了对比和澄清,大于号>也是命令提示符的特殊字符。它之所以是一个特殊字符,是因为它具有特殊功能重定向输出,也就是说,尽管它只是一个字符,但它本身却可以作为一条命令。

所以也應該逃脱。

例如,您可以通过正确地转义提示,将其设置为指示性箭头:

prompt ^>

会导致:

示例屏幕截图说明特殊字符转义

因此,始终用双引号括住参数(即变量的值)是一种很好的做法,这意味着"%Variable%"解释器绝不预计在这种情况下会出现混淆。

答案2

由于相关路径包含空格,因此参数需要用双引号引起来:

>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
...

相关内容