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