Windows 7 中出现奇怪的 PATH 问题 - 设置后变为空

Windows 7 中出现奇怪的 PATH 问题 - 设置后变为空

我对 PATH 系统变量有点问题。由于我使用了很多 cmd 应用程序和脚本,所以我在其中添加了很多内容。但字符串的长度不是问题。我已经解决了这个限制。

高级系统属性是我注意到的唯一一款在编辑后正确初始化 PATH 变量的应用程序。如果我手动编辑注册表,应用程序不会使用 PATH 的更新版本。所以我必须使用它,否则就会一直登录和注销。

但是,最近,在该应用程序中设置了一些 PATH 值后,它总是最终为 (null),即使它是相同的字符串。一旦我按下 OK,它就会变暗。注册表项仍然存在。我必须注销或重新启动才能让 PATH 填充其注册表项中的任何内容。

我甚至将其精简为 %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem,但 PATH=(null) 和 %windir% 仍然无效。

别管它,它有效。

编辑它,不行。直到我重新启动才行。

那么,有什么想法吗?...关于为什么高级系统属性在更新系统变量时会这样表现。我相信这就是问题所在,因为它是一个初始化应用程序,而且在干净重启时一切都正常。

答案1

经过几次尝试,我设法在使用命令行工具和 PATH 时得出了一些基本的环境变量规则。

第一点:长度变量的长度不得超过 2047如果变量的长度超过 2047,则后面的变量不会扩展,不会显示,并且 Path 将变为空,PATH=(null)。

它不太可能到达这里,但事实上,我遇到过这种情况,这是主要问题,但是,这个限制很棘手,因为它只有在编辑器中编辑环境变量后才会生效(高级系统设置/SystemPropertiesAdvanced.exe)。如果启动后变量未经编辑,则不会产生任何负面影响,但是,如果在单独的进程中执行子资源管理器进行浏览,则从这些资源管理器窗口打开的命令控制台将受到影响。

第一。B) 哪个长度? 没关系。如果在命令控制台中使用变量,则其值(扩展或声明)无论如何都会被限制为 2047 个字符。

已声明

ex:
x = %variable001%;%variable002%;%variable003%;...;%variable146%;%variable147%

Won't work.
Up to 146, it will because x won't be longer than 2047.
But 147 will kill it. Length of %variable???%; x 147 = 2058.

扩展

ex:
x001 = C:\Program Files
x002 = C:\Program Files
x003 = C:\Program Files
...
x120 = C:\Program Files
x121 = C:\Program Files

z = %x001%;%x002%;%x003%;...;%x120%;%x121%;

Will work but will show only up to x120 and part of x121.
Length of C:\Program Files; x 120 = 2040 + C:\Prog of x121

第二名可扩展变量不会递归扩展。在注册表中,它们的类型为 REG_EXPAND_SZ,在环境变量编辑器中,如果输入 % 字符,则会设置它们。如果声明了此类变量,则需要这样做,以便在 PATH 之前初始化它们。普通变量没有这个问题。它们可以在 PATH 之后声明,并且它们的值仍会显示。

ex:
a = C:\Windows
b (exp) = %SystemRoot%
c (exp) = %a%;%b%;%x%;%y%
x = C:\Windows
y (exp) = %SystemRoot%
z (exp) = %a%;%b%;%x%;%y%

echo %c% will output C:\Windows;C:\Windows;C:\Windows;%y%
                          a          b          x      y
echo %y% will output C:\Windows
echo %z% will output C:\Windows;C:\Windows;C:\Windows;C:\Windows
                          a          b          x          y

变量 y 没有在 c 内部扩展,因为它是在 c 之后声明的,而是在 c 的克隆 z 中扩展。

因此,要使 PATH 保持正常运行,它前面不能有冗长的变量,并且可以包含可扩展变量,只要这些变量在字母层次结构(从 a 到 o)中在 Path 之前声明即可。同时将最终值的长度保持在 2048 以下。

答案2

我也有同样的经历!你的“PATH”实在太大了!

PATH 不能长于“一定数量的字符”,不记得具体数量了。

无论如何,此限制是在允许您编辑它的控制面板窗口中强制执行的。

如果您打开注册表并向其中添加文本,您可以使其变大;但是这样做只会使其溢出。

一个有趣的副作用是 %windir% 也失去了它的价值。

当然,在注册表中它们都填充了字节,但 Windows 无法读取它们。

所以解决方案是:

  1. 在控制面板中打开 PATH 编辑器
  2. 删除一个字符
  3. 尝试添加一个,比如说,一个“a”(按“a”键)
  4. 如果无法添加“a”,请从步骤 2 开始重复。否则,恭喜您:您找到了 PATH 限制。您无法使其大于该值

答案3

我通过使用旧的 DOS 样式路径重置 PATH 变量来解决了这个问题。

长文件夹名称 -c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC

等效简称 -c:\PROGRA~2\MICROS~1.0\VC

谢谢廷博for %I in (.) do echo %~sI获取 DOS 路径的解决方案。邮政

希望这可以帮助解决这个问题。

相关内容