由于不想动用管理者权限,打算设在使用者 PATH 环境变数就好,原本长这样:
修改后的 PATH 有两个问题:1) 下方有些路径遗失,最后一笔只到 App10,还被截掉一半 2) 前方多了系统 PATH 的内容。
其实 1024 字元的长度限制 SETX 文件有写,以前看过有点印象,但没被咬过就从没放在心上:
但我以为这种关键时刻,系统应该加上“长度超过 1024 将被截断,你确定仍要写入吗?”之类的防呆,万万没想到是资料都消失了才跟你报告坏消息,让你后悔也来不及。
至于前方多出的路径来自系统 PATH,因为 %PATH% 会同时含系统及使用者 PATH 内容,SETX 未加 /M 参数时是设定使用者环境变数,于是乎系统 PATH 便在使用者 PATH 重复出现。
坦白说,环境变数只有 PATH 及某些 LIB PATH 需要串接会有超长问题,大部分环境变数用 SETX 设定并不会有类似困扰。
好,那来研究透过指令串接 PATH 的正确姿势吧!
PowerShell 有篇文件介绍环境变数操作,其中有个令人兴奋的写法:
这种雷只要踩过一次就会记住了,我还是觉得超长没加防呆直接截断是种“花惹发”等级的设计,既然 PowerShell 已成 Windows 系统管理的主流,就不用期待 DOS 工具改进修正,未来处理系统管理工作,还是忘了 DOS 直上 PowerShell 吧。