set命令仅在当前cmd窗口生效,用于临时查看(如set、set path)和设置(如set myvar=hello)环境变量,不持久;变量名不区分大小写,含空格路径需加英文双引号,echo %var%未展开说明变量未定义或跨窗口。
在 windows 的 cmd 中,set 命令用于查看和修改当前命令行窗口有效的环境变量,它不保存、不持久,关掉窗口就失效。这是最轻量、最快的调试方式,适合临时测试或批处理运行时动态调整。
查看环境变量
直接输入以下命令即可:
- set —— 显示当前窗口所有环境变量(名称+值)
- set PATH —— 只显示 PATH 变量(注意大小写不敏感,set path / set Path 效果一样)
- echo %USERPROFILE% —— 查看某变量值(推荐用法,更直观;若变量不存在会原样输出 %xxx%)
设置或修改变量(当前窗口内)
所有修改仅对本次 CMD 窗口生效,不影响系统或其他程序:
- set MYVAR=hello —— 创建新变量 MYVAR,值为 hello
- set PATH=C:\tools;%PATH% —— 覆盖 PATH 为新路径 + 原有全部内容(注意:%PATH% 会被立即展开)
- set PATH=%PATH%;C:\mybin —— 在原有 PATH 末尾追加一个目录
- set TEMP= —— 清空 TEMP 变量(等号后不留空格)
注意事项和常见问题
使用 set 时容易忽略几个关键点:
- 变量名区分大小写吗?—— CMD 中不区分,set path 和 set PATH 查到的是同一个
- 路径含空格或特殊符号(如 &、|、^)怎么办?—— 用英文双引号包裹整个赋值,例如:set JAVA_HOME="C:\Program Files\Java\jdk-17"
- 为什么 echo %MYVAR% 显示 %MYVAR% 而不是值?—— 变量未定义,或你在另一个 CMD 窗口里查(set 是会话级的)
- 能否用 set 修改系统级 PATH 并让后续程序看到?—— 不能,set 改的只是当前 CMD 的副本;要永久生效必须用 setx 或图形界面











