Windows上增加路径

仔细想一下这个操作应该算是简单,要加入时基本都是在命令行下,直接使用 set 或 path 命令都可以。

可为啥总是很抗拒呢?应该是最终要输入 %PATH% 这个变量,大写不好输入吧。

正好学习rust,就想写个小程序试一下。发动所有的AI开始写,结果并不是很成功。

path这个环境变量在windows上有两个地方:一个是全局的,一个是用户的。使用程序可以分别指定修改这两个环境变量。AI也确实做到了。但环境变量改了,当前打开的窗口中并没有改变。程序运行中止后,环境又恢复了。AI提议说发个广播消息,通知所有打开的窗口环境变量改变了。但好像并没啥子用。

那换成批处理吧,肯定是可行的。这么简单的功能直接写个cmd文件如下:

结果,这个代码跑不了,报错:此时不应有 \Windows。

费劲调试了半天,干脆还是问AI吧,一般的AI还搞不定。最后还是gemini 2.0给了以下的解决方案:

看着好像差不多,但真的能用。还给了解释如下:

修改说明

  1. "%~1":
    • %~1 会移除第一个参数的周围的引号, 这样可以兼容带引号和不带引号的参数,并且能避免空格带来的问题。
    • "%~1" 使用双引号包裹参数,可以确保正确处理包含空格的路径。
  2. set "new_path=%PATH%;%~1":
    • 使用 set "variable=value" 形式设置变量, 确保正确处理包含空格和特殊字符的路径。
    • 先创建一个临时变量 new_path, 将当前 path 和 参数进行拼接。
  3. setx PATH "%new_path%":
    • setx 命令是用来永久设置环境变量的命令, 可以将变量写入到注册表中。
    • 将更新后的路径设置到 PATH 环境变量。 注意, 需要使用双引号来包裹路径。

改进后的脚本优点

正确处理空格和特殊字符: 使用 “%~1” 和 set “variable=value” 可以正确处理路径中的空格和特殊字符

永久设置环境变量: 使用 setx 命令可以永久设置环境变量,使得修改在新的 cmd 窗口中也生效。

避免临时的环境变量影响: 先将环境变量拼接好, 然后再一起设置,可以避免临时的环境变量影响。

Leave a Reply

Your email address will not be published. Required fields are marked *