命令是干什么的
set 用于查看与临时设置 CMD 环境变量:不带参数列出当前会话的全部变量,带前缀过滤显示匹配项,set 变量=值 只在当前命令行窗口生效。它不同于图形界面的“系统属性-环境变量”:这里的修改关闭窗口即失效,需要持久化必须用 setx。
变量引用与拼接
引用变量用 %变量名%,拼接路径写成 %PATH%;新路径 的形式。set 的等号两边不能有空格:写成 set A = 1 会创建一个名字带尾空格的变量,之后取值总为空,这是排查“变量明明设了却取不到值”时的首要检查点。
基本信息
| 适用平台 | Windows 全版本 CMD(Windows 7/10/11 与各版 Server) |
|---|---|
| 语法 | set [变量[=值]];set 前缀* 过滤显示 |
| 作用域 | 仅当前命令行会话,关闭窗口即失效;持久化用 setx |
| 相关命令 | setx 写入用户或系统环境变量;echo %变量% 查看取值 |
典型使用场景
- 排查“命令找不到”:先 set PATH 看当前会话的 PATH 是否完整
- 临时为某次运行指定工具目录,不改动系统级配置
- 批处理脚本内部设置临时变量,供后续命令引用
- 按前缀过滤,快速确认某软件安装后写入的路径变量
- 对比交互会话与脚本环境差异,同一台机器上变量可能不同
常用示例
常用示例
set # 列出当前会话全部变量
set PATH # 只看 PATH
set USER # 过滤显示以 USER 开头的变量
set TEMP=C:\Temp # 临时覆盖 TEMP,仅本窗口有效
set PATH=%PATH%;D:\tools # 在原有 PATH 基础上追加路径
setx PATH "%PATH%;D:\tools" # 持久化到用户环境变量,新窗口才生效用法读法
| 写法 | 效果 | 说明 |
|---|---|---|
| set | 列出全部变量 | 输出很长,建议先加前缀过滤 |
| set PATH | 显示指定变量 | 变量不存在时不输出任何内容 |
| set TEMP=C:\Temp | 设置变量 | 等号两边不能有空格 |
| set PATH=%PATH%;D:\tools | 追加而非覆盖 | 带 %PATH% 才是追加 |
| setx 变量 值 | 持久化到注册表 | 对当前窗口不生效,需新开窗口 |
| echo %变量% | 查看取值 | 未定义时原样输出 %变量% |
set 只影响当前命令行会话,关闭窗口或新开窗口都会回到原值;需要跨会话保留必须用 setx,而 setx 的修改对当前已打开的窗口同样不生效。
set PATH=新值(不带 %PATH%)会把整条 PATH 覆盖成单个路径,大量系统命令会立即失效;追加时务必保留 %PATH%。