set
设置临时变量 临时变量赋值要用等号 set ABC=123
setx
设置永久变量 setx XYZ 789
/m
参数 设置为系统变量 默认为用户变量
例子, 设置永久系统变量
setx /m JAVA_HOME_11 Z:\AwesomeProgram\Java\openjdk-11
官方文档是直接用 ~
代替,但亲测在多组百分号使用时存在问题,我不建议使用
结合互联网资料,结合验证,得出结论
图形化界面,直接用 %
, 示例: %JAVA_HOME%
命令行,用 ^%
, 示例: setx /m JAVA_HOME ^%JAVA_HOME_11^%
bat 脚本,用 %%
, 示例: setx /m JAVA_HOME %%JAVA_HOME_11%%
注意命令行和脚本引用的变量不能在引号里, 外面的值可以用引号
存在空格时可借助双引号包起来, 一般 Path 路径都会有空格出现, 为避免报错建议使用引号 "%Path%;new_path_1"
在 Windows 环境下,即使使用 setx /m
修改了环境变量也只是写到了注册表中,并没有立即生效,
设置变量使用到原有变量时需要留意,例如 Path 要添加多个新路径时要一次写完,不能分开多次写,非要分就借助临时变量
# 错误示范
setx /m Path "%Path%;new_path_1"
setx /m Path "%Path%;new_path_2"
# 正确示范
setx /m Path "%Path%;new_path_1;new_path_2"
警告: 正保存的数据被裁断到 1024 字符。
成功: 指定的值已得到保存。
如果设置未生效,可以用使用 echo %Path%
得到系统变量重新设置就好了
Path 默认环境变量 重置命令 (命令行里执行)
setx /m Path ^%SystemRoot^%\system32;^%SystemRoot^%;^%SystemRoot^%\System32\Wbem;^%SYSTEMROOT^%\System32\WindowsPowerShell\v1.0\;^%SYSTEMROOT^%\System32\OpenSSH\