CMD cmd 命令详解


启动 Windows 命令交互解释器实例。

另请参阅: color     elevate     PowerShell     runAs     setlocal

基本用法     详细用法

cmd /?
			

基本语法

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] string]
			

 

参数 EN 解释 中文翻译 备注
/A Causes the output of internal commands to a pipe or file to be ANSI 把到管道 (或文件) 的内部命令,输出为 ANSI
/C Carries out the command specified by string and then terminates 执行由字符串指定的命令,然后终止
/D Disable execution of AutoRun commands from registry 禁止从注册表执行 AutoRun 命令
/E:OFF Disable command extensions 禁用命令扩展
/E:ON Enable command extensions 启用命令扩展
/F:OFF Disable file and directory name completion characters 禁用文件和目录名称的字符补全
/F:ON Enable file and directory name completion characters 启用文件和目录名称的字符补全
/K Carries out the command specified by string but remains 执行由字符串指定的命令,但保留
/Q Turns echo off 关闭回显
/S Modifies the treatment of string after /C or /K 修改 /C (或 /K) 之后的字符串处理
/T:fg Sets the foreground/background colors (see COLOR /? for more info) 设置前台/背景颜色 (见 COLOR /? 了解更多信息)
/U Causes the output of internal commands to a pipe or file to be Unicode 把管道 (或文件) 的内部命令, 输出为 Unicode
/V:OFF Disable delayed environment expansion. 禁用延迟的环境扩展。
/V:ON

Enable delayed environment variable expansion using ! as the delimiter.

For example, /V:ON would allow !var! to expand the variable var at execution time.

The var syntax expands variables at input time, which is quite a different thing when inside of a FOR loop.

使用 ! 作为分隔符,启用延迟的环境变量扩展。

例如,/V:ON 允许 !var! 在执行时扩展变量 var。

var 语法在输入时扩展变量, 这在 FOR 循环中是完全不同的事情。

 

语法规则


注意:

可接受通过命令分隔符 && 分隔多个命令,若字符串被引号包围。

此外,由于兼容性原因,/X 等同 /E:ON,/Y 等同 /E:OFF,/R 等同 /C。 任何其他开关会被忽略。

 

若 /C (或 /K) 被指定,则会把开关后的命令行剩余部分作为命令行进行处理,其中,会使用以下逻辑处理双引号字符:

1. 若满足以下所有条件,则会保留命令行引号字符:

- 没有 /S 开关

- 正好 2 引号字符

- 在 2 引号字符之间没有特殊字符 &<>()@^|

- 在 2 引号字符之间有一个或多个空格字符

- 在 2 引号字符之间的字符串是可执行文件的名称

2. 否则,旧行为是看首字符是否为引号字符, 若是,剥离前导字符并移除命令行最后引号字符, 保留最后引号字符后的所有文本。

 

AutoRun 命令


若 /D 未在命令行中被指定,则当 CMD.EXE 启动时, 它会寻找以下 REG_SZ/REG_EXPAND_SZ 注册表变量, 若存在其中一个或两个,则会先执行它们。

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

和/或

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

 

命令扩展


默认情况下,命令扩展是启用的。 还可禁用特定援引的扩展名,通过使用 /E:OFF 开关。

可在机器上和/或用户登录会话中启用或禁用 CMD.EXE 所有援引的扩展, 通过使用 REGEDIT.EXE 在注册表中把以下一个或两个 REG_DWORD 值:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions

和/或

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions

设为 0x1 或 0x0。 用户特定设置优先于机器设置。 命令行开关优先于注册表设置。

在批处理文件中,SETLOCAL ENABLEEXTENSIONS 或 DISABLEEXTENSIONS 自变量优先于 /E:ON 或/E:OFF 开关。 见 SETLOCAL /? 了解细节。

命令扩展涉及对以下命令的更改和/或添加:

DEL 或 ERASE

COLOR CD 或 CHDIR

MD 或 MKDIR

PROMPT

PUSHD

POPD

SET

SETLOCAL ENDLOCAL

IF

FOR

CALL

SHIFT

GOTO

START (还包括对外部命令援引的更改)

ASSOC

FTYPE

要获取特定细节,请键入 commandname /? 查看。

 

延迟环境变量扩展


默认情况下,延迟的环境变量扩展不被启用。

采用 /V:ON 或 /V:OFF 开关能启用或禁用 CMD.EXE 特定援引的延迟环境变量扩展。

可在机器上和/或用户登录会话中启用或禁用 CMD.EXE 所有援引的延迟扩展, 通过使用 REGEDIT.EXE 在注册表中把以下一个或两个 REG_DWORD 值:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion

和/或

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion

设为 0x1 或 0x0。 用户特定设置优先于机器设置。 命令行开关优先于注册表设置。

在批处理文件中,SETLOCAL ENABLEDELAYEDEXPANSION 或 DISABLEDELAYEDEXPANSION 自变量优先于 /V:ON 或 /V:OFF 开关。 见 SETLOCAL /? 了解细节。

若延迟的环境变量扩展被启用, 则惊叹号字符在执行时间可用于代入环境变量的值。

 

字符补全


采用 /F:ON 或 /F:OFF 开关能启用或禁用 CMD.EXE 特定援引的文件名补全。

可在机器上和/或用户登录会话中启用或禁用 CMD.EXE 所有援引的补全, 通过使用 REGEDIT.EXE 在注册表中把以下一个或两个 REG_DWORD 值:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar

和/或

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar

设为带有用于特定功能控制字符的十六进制值 (例如,0x4 是 Ctrl-D,0x6 是 Ctrl-F)。 用户特定设置优先于机器设置。 命令行开关优先于注册表设置。

若采用 /F:ON 开关启用补全, 使用的两个控制字符是 Ctrl-D (用于目录名补全) 和 Ctrl-F (用于文件名补全)。

要在注册表中禁用特定补全字符,请使用 (0x20) 空格值 (因为它不是有效控制字符)。

当键入 2 控制字符之一时, 补全会被援引。 补全函数将获取光标左侧的路径字符串 (若获取字符为空,则追加通配符), 并构建匹配路径列表。

接着显示第一匹配路径。 若没有匹配的路径,则会发出嘟嘟声并离开显示。 此后,重复按下相同控制字符将循环遍历匹配路径列表。 按住 Shift 键加控制字符将向后遍历列表。

若以任何方式编辑行并再次按下控制字符,保存的匹配路径列表会被丢弃,并生成一个新的。 若在文件名和目录名补全之间切换,会同样发生。

2 控制字符之间的唯一区别是文件补全字符匹配文件和目录名两者,而目录补全字符只匹配目录名。 若文件补全被用于任何内置目录命令 (CD MD 或 RD),则假定为目录补全。

补全代码通过在匹配路径周围放置引号,以正确处理包含空格或其他特殊字符的文件名。 还有,若备份,则会从行中援引补全,在援引补全点光标右边的文本会被丢弃。

需要引号的特殊字符:

空格

&()[]{}^=;!'+,`~

基本用法

功能 命令 解释 备注
UAC Start-Process CMD -Verb runAs 在 PowerShell 以管理员权限启动 CMD 不用输入管理员口令
帮助 cmd /? 展示帮助信息

以下为 UAC.bat 文件内容,双击能以管理员身份运行 wmic 获取 CPU 温度。

@ echo off
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :st","","runas",0)(window.close)&goto :eof
:st
wmic /namespace:\\root\wmi PATH MSAcpi_ThermalZoneTemperature get CriticalTripPoint, CurrentTemperature
			

 

版权声明: 本文为独家原创稿件,版权归 乐数软件 ,未经许可不得转载。