当变量扩展到包含空格的路径时,在PATH变量中扩展环境变量肯定存在问题。
我们创建了自己的系统级别变量,例如“ OUR_ROOT = c:\ MyRoot”,然后在系统PATH中使用了它,例如“ PATH =;%OUR_ROOT%\ bin;”。并将其正确扩展为“ PATH =; c:\ MyRoot \ bin;”。到目前为止没有问题。
但是,在Windows 7(32位)上,我自行安装了一个产品并创建了以下系统环境变量:
STUDIO_BIN=C:\program files\Company Name\Product Name 10.4\bin
并将其添加到系统PATH变量中:
PATH=<other path elements>;%STUDIO_BIN%;<more path elements>
但是CMD中显示的PATH值包含“%STUDIO_BIN%;”。而不是扩展路径。“我的电脑”>“属性”>“高级”>“环境变量”中的值也保持不变。这意味着我无法在该目录中运行需要DLL的程序。
通过仅将STUDIO_BIN(通过“我的电脑”>“属性”>“高级...”>“环境变量”)更改为没有嵌入空格的名称:
STUDIO_BIN=C:\ProductName\bin
然后重新启动CMD窗口,PATH现在是:
PATH=<other path elements>;C:\ProductName\bin;<more path elements>
另一种解决方案是使用“我的电脑”>“属性”>“高级...”>“环境变量”对话框,充分编辑您在PATH中使用的系统变量。我尝试添加一个字符并将其删除以进行“更改”,然后确定,开始了新的CMD提示符,并且PATH未正确扩展。然后,我尝试删除部分路径,因此
STUDIO_BIN=C:\Program Files\Company Name
(省略“产品名称10.4”),瞧,下一个CMD提示显示STUDIO_BIN正确扩展的PATH!
奇怪的是,如果我返回并将“产品名称10.4”添加到STUDIO_BIN(包括我开始对其进行处理之前原来存在的所有空格),并且PATH仍正确扩展。
显然,对其内容进行了足够的更改后,PATH变量在“环境变量”对话框中进行了一些额外的处理,从而使其可以工作。当产品的安装程序添加了变量时,该处理未完成(可能只是直接在注册表中修改了PATH)。
我几乎肯定这也是XP的问题。当我组装一台新的开发机器时,它在Windows 7中重新浮出水面。显然,它尚未由Microsoft修复。
显然,即使MS定义的变量(如%ProgramFiles%)也无法在PATH中正确扩展。
如果您通过命令行或批处理文件设置PATH,则此页面可能提供答案。(将整个命令用引号引起来。)我不知道我安装的产品用来设置环境变量的安装程序是什么,但是显然需要进行任何处理才能正确扩展带有空格的路径。
所以-总而言之,您可以: