Windows环境变量值中的%

时间:2016-10-08 11:19:38

标签: windows environment-variables

Windows环境变量中%的含义是什么?

%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;

特别是Path, TMP, TEMP变量值具有此符号。可能还有其他变量,但我只遇到了这三个。

在设置我自己的路径变量时是否需要为此烦恼?

2 个答案:

答案 0 :(得分:1)

%VariableName%是引用环境变量的语法。实际名称是%符号之间的部分。

因此,第一行完全展开后,会评估SystemRoot变量的值,然后是\system32;

如果要在Windows shell中使用环境变量,或者如果要定义引用其他变量的环境变量,则需要使用%...%

答案 1 :(得分:1)

  

在设置我自己的路径变量时是否需要为此烦恼?

一般情况下,不,你没有。如果您希望PATH的有效值依赖于某些其他环境变量,则只能执行此操作。即便如此,它只是一种便利,绝不是必需品。

作为一个可能方便的实际示例,假设您编写了一个程序,可以自动将Java SDK更新到最新版本,因此您的用户无需手动执行此操作。更新SDK会将其移动到其他位置,因此您可能希望将SDK的新位置添加到路径中,并删除旧位置。

你可以通过每次解析PATH,找到指向旧位置的部分并适当地改变它来做到这一点。但这很痛苦,如果你在全球范围内这样做,那么用户对Java是否在路径中没有任何选择,即使他们不使用它。因此,您可以创建一个指向当前SDK位置的变量JAVA_PATH。这样,它很容易更改,个人用户可以选择是否将%JAVA_PATH%放在自己的路径中。

在微软的情况下(你注意到的例子),系统root永远不会移动,但是通过使用变量,他们可以硬编码PATH的默认值,而不必在操作系统安装期间显式生成它。

PS:PATH中引用的环境变量必须都是系统变量。引用用户变量将不起作用。