CMD 中 动态环境变量
在 CMD(cmd.exe)中,像这样由解释器直接内置、并且每次调用时都会实时计算或获取的变量,被称为“动态环境变量”(Dynamic Environment Variables)。
与普通的系统变量(如 %PATH% 或 %USERNAME%,它们是静态存储在注册表内存中的)不同,动态变量在系统中是不可见的(如果你在命令行单独输入 set,是看不到它们的),只有当你在命令中引用它们时,CMD 才会实时生成其对应的值。
在现代 Windows 的 CMD 中,这种纯粹的内置动态变量总共有 8 个。以下是它们的完整列表和作用:
1. 核心状态类
-
%ERRORLEVEL% -
用途:返回上一条执行命令的退出状态码。
-
说明:通常
0代表成功,非0代表出错。在批处理中极其常用于条件判断。 -
%CMDCMDLINE% -
用途:返回启动当前 cmd.exe 会话时所使用的完整命令行字符串。
-
说明:常用于判断脚本是被双击运行的,还是在控制台中手动输入命令运行的,以及获取启动时的参数(就像你之前的防御脚本所做的那样)。
-
%CMDEXTVERSION% -
用途:返回当前命令处理器(Command Processor Extensions)的版本号。
-
说明:常用于判断当前系统的 CMD 是否支持某些较新的语法特性(通常返回
2)。
2. 时间与路径类
-
%CD%(Current Directory) -
用途:实时返回当前所在的目录路径。
-
说明:比起
%~dp0(脚本所在路径),%CD%强调的是你当前“站在”哪个文件夹下执行命令。 -
%DATE% -
用途:返回当前系统的日期。
-
说明:格式取决于系统控制面板中的区域设置(如
2026/07/29 周三)。 -
%TIME% -
用途:返回当前系统的时间。
-
说明:精确到百分之一秒(如
22:16:38.15)。常与%DATE%结合用于生成日志文件名。
3. 数据生成与其他
-
%RANDOM% -
用途:返回一个
0到32767之间的随机十进制整数。 -
说明:批处理生成随机数、随机文件名的唯一内置手段。
-
%HIGHESTNUMANODENUMBER% -
用途:返回此计算机上的最高 NUMA 节点号。
-
说明:极度冷门的变量,通常只有在管理大型多路服务器,需要做高阶 CPU 亲和性分配时才会用到。普通电脑上通常返回
0。
补充:如何查看其他普通的系统环境变量?
除了上述 8 个动态变量外,Windows 还有几十个标准的静态环境变量(例如 %APPDATA%、%COMPUTERNAME%、%OS% 等)。你可以随时在 CMD 窗口中输入以下命令来查看完整列表:
set

浙公网安备 33010602011771号