set(环境变量)

显示、设置或删除 cmd.exe 环境变量。 如果不结合任何参数使用,set 将显示当前环境变量设置

注意

此命令需要默认启用的命令扩展。

set 命令还可以使用不同参数从 Windows 恢复控制台运行。 有关详细信息,请参阅 Windows 恢复环境 (WinRE)

语法

set [<variable>=[<string>]]
set [/p] <variable>=[<promptString>]
set /a <variable>=<expression>

参数设置

参数 说明
<variable> 指定要设置或修改的环境变量。
<string> 指定要与指定环境变量关联的字符串。
/p <variable> 的值设置为由用户输入的一行输入。
<promptstring> 指定提示用户输入的消息。 此参数必须与 /p 参数一起使用
/a <string> 设置为计算的数值表达式。
<expression> 指定数值表达式。
/? 在命令提示符下显示帮助。

注解

  • 如果启用了命令扩展(默认),并且运行带值的 set,则将显示以该值开头的所有变量

  • <>|&^ 是特殊的命令 shell 字符,在 <string> 中使用这些字符时,必须在它们前面加上转义字符 (^) 或用引号将其括起来(例如“StringContaining&Symbol”)。 如果使用引号将包含某个特殊字符的字符串引起来,则引号将设置为环境变量值的一部分。

  • 使用环境变量控制某些批处理文件和程序的行为,并控制 Windows 和 MS-DOS 子系统的显示和工作方式。 set 命令通常用于在 Autoexec.nt 文件中设置环境变量

  • 如果使用不带任何参数的 set 命令,则会显示当前环境设置。 这些设置通常包括 COMSPEC 和 PATH 环境变量,它们用于帮助查找磁盘上的程序。 Windows 使用的其他两个环境变量是 PROMPT 和 DIRCMD

  • 如果为 <variable><string> 指定值,则指定的 <variable> 值将添加到环境中,<string> 与该变量关联。 如果环境中已存在变量,则新字符串值将替换旧的字符串值。

  • 如果仅为 set 命令指定变量和等号(没有 <string>),则会清除与变量关联的 <string> 值(就好像变量不存在一样)。

  • 如果使用 /a 参数,则支持以下运算符(优先级递减):

    操作员 执行的操作
    ( ) 分组
    ! ~ - 一元
    * / % 算术
    + - 算术
    << >> 逻辑移位
    & 位与
    ^ 位异或
    = *= /= %= += -= &= ^= = <<= >>=
    , 表达式分隔符
  • 如果使用逻辑(&&||)或模数 (%) 运算符,请将表达式字符串括在引号中。 表达式中的任何非数值字符串都被视为环境变量名称,其值在处理之前会转换为数字。 如果指定在当前环境中未定义的环境变量名称,则会分配一个零值,这样就可以使用环境变量值执行算术,而无需使用 % 检索值。

  • 如果从命令脚本外部的命令行运行 set /a,则会显示表达式的最终值

  • 数值是十进制数字,除非前缀为 0×(对于十六进制数字)或 0(对于八进制数字)。 因此,0×12 等同于 18,18 等同于 022。

  • 默认情况下禁用延迟环境变量扩展支持,但可以使用 cmd /v 启用或禁用它

  • 创建批处理文件时,可以使用 set 来创建变量,然后以与使用编号变量 %0 到 %9 相同的方式使用它们。 还可以使用变量 %0 到 %9 作为 set 的输入

  • 如果调用批处理文件中的变量值,请将值用百分比符号 (%) 括起来。 例如,如果批处理程序创建名为 BAUD 的环境变量,则可以通过在命令提示符下键入 %baud%,将与 BAUD 关联的字符串用作可替换参数

示例

若要为名为 testVar 的环境变量设置值 TEST^1,请键入:

set testVar=TEST^^1

set 命令将等号 (=) 后的所有内容分配给变量的值。 因此,如果键入 set testVar=TEST^1,将得到以下结果,testVar=TEST1

要为环境变量 testVar 设置值 TEST&1,请键入:

set testVar=TEST^&1

若要设置名为 include 的环境变量,以便字符串 c:\directory 与其关联,请键入:

set include=c:\directory

然后,可以在批处理文件中使用字符串 c:\directory,方法是用百分比符号 (%) 将名称 include 括起来。 例如,可以在批处理文件中使用 dir %include% 来显示与 include 环境变量关联的目录的内容。 处理此命令后,字符串 c:\directory 将替换 %include%

若要在批处理程序中使用 set 命令将新目录添加到 path 环境变量,请键入:

@echo off
rem ADDPATH.BAT adds a new directory
rem to the path environment variable.
set path=%1;%path%
set

若要显示以字母 p 开头的所有环境变量的列表,请键入:

set p

若要显示当前设备上所有环境变量的列表,请键入:

set