我正在尝试使用设置环境变量setx
命令,例如如下
setx PATH "f:\common tools\git\bin;f:\common tools\python\app;f:\common tools\python\app\scripts;f:\common tools\ruby\bin;f:\masm32\bin;F:\Borland\BCC55\Bin;%PATH%"
但是,如果值的长度超过 1024 个字符,则会出现以下错误:
警告:正在保存的数据被截断为 1024 个字符。
成功:指定的值已保存。
但是最后的一些路径没有保存在变量中,我猜是由于错误提示的字符限制。
答案1
答案2
如果您使用的是 Windows Vista 或更高版本,您可以创建一个symbolic link
文件夹。例如:
mklink /d C:\pf "C:\Program Files"
mklink /d C:\pf86 "C:\Program Files (x86)"
会生成一个链接,所以c:\pf
会是你的程序文件夹。我使用这个技巧从路径中删去了 300 个字符。
(我知道它与 setx 无关,但对于搜索超过 1024 个字符限制的人来说很有用)
答案3
您可以使用类似于以下内容的 PowerShell 脚本:
$newPath = 'F:\common tools\git\bin;F:\common tools\python\app;F:\common tools\python\app\scripts;F:\common tools\ruby\bin;F:\masm32\bin;F:\Borland\BCC55\Bin'
$oldPath = [Environment]::GetEnvironmentVariable('PATH', 'Machine');
[Environment]::SetEnvironmentVariable('PATH', "$newPath;$oldPath",'Machine');
这Environment.SetEnvironmentVariable()
API 调用将广播WM_SETTINGCHANGE
所以您不需要重新启动。
答案4
比 setx 更优秀的路径操作工具是路径检查程序。不幸的是,它仅限于编辑路径。
除了比 setx 更好的用户体验之外,您还不受 1024 个字符的限制。与直接注册表操作不同,此应用程序使用环境.设置环境变量()将广播的 API 调用WM_SETTINGCHANGE
。