在 WINDOWS / DOS 编程中,对以前一些命令(或变量)所做的更改或者添加,称之为命令扩展,命令扩展会影响 这些命令(或变量)的行为。例如:DOS控制台的命令历史记录就是一种命令扩展特性,如果没有打开命令扩展,使用键盘上的上下方向键,是无法切换至历史执行的cmd命令的。命令扩展是cmd.exe的一种特性。
【如何开启cmd.exe的命令扩展特性】
1、命令行环境中,使用“cmd.exe /e:on”命令,它会打开一个新的命令行环境,在使用“cmd.exe /e:off”命令开启另一个命令行环境(或者使用exit退出这个环境)之前,命令扩展特性始终有效。
2、在批处理文件中,在下面两个局部空间之一:
1)“setlocal enableExtensions” 和“endlocal”两个命令之间的局部空间中
2)“setlocal enableExtensions” 和 批处理文件的结尾处之间的局部空间中
则会自动启用cmd.exe的命令扩展特性。也就是说, cmd.exe的命令扩展特性由“setlocal enableExtensions”来自动启用,在“endlocal”命令(或退出批处理文件)之后,“setlocal enableExtensions” 启用的命令扩展特性将会失效。
示例
demo.bat的内容如下:
::demo.bat
@echo off
echo before ...
setlocal enableExtensions
:: 只有在cmd.exe开启了命令扩展在状态下,:EOF标签才能被识别
goto :EOF
echo after ...
endlocal
运行
C:\>demo
before ...
C:\>
【查看命令扩展特性的版本】
使用内置变量CMDEXTVERSION查看当前CMD.EXE的命令扩展版本
什么是CMDEXTVERSION内置变量
命令扩展特性对什么有影响?
- 命令扩展会对一些命令产生影响
例如:命令扩展给if命令添加了很多功能,“ equ ”运算符就是其中之一。没有启用命令扩展时,在if命令中不能使用“ equ ”运算符,示例如下:
C:\>cmd /e:off //禁用命令扩展
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\>if 3 equ 3 echo ok
此时不应有 equ。
C:\>cmd /e:on //启用命令扩展
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\>if 3 equ 3 echo ok
ok
C:\>
- 命令扩展会对一些内置变量产生影响。批处理文件中的 “%*” 内置变量只有在命令扩展时是有效的
demo.bat的内容如下:
::demo.bat
echo %0
echo %*
运行
C:\>cmd /e:on
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\>demo one two
C:\>echo demo
demo
C:\>echo one two
one two
C:\>cmd /e:off
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\>demo one two
C:\>echo demo
demo
C:\>echo *
*
C:\>
- 命令扩展会对一些预定义标签产生影响。例如,:EOF标签只有在命令扩展时是可用的
demo.bat的内容如下:
::demo.bat
echo before
goto :EOF
echo after
运行
C:\>cmd /e:on
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\>demo
C:\>echo before
before
C:\>goto :EOF
C:\>cmd /e:off
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\>demo
C:\>echo before
before
C:\>goto :EOF
系统找不到指定的批处理标签 - EOF
C:\>
【小技巧】
对于不同的CMD.EXE(其使用的命令扩展版本不同)环境,其命令扩展也是不同的。在正在使用的DOS环境中,使用“ cmd /? ”命令查看当前DOS环境的命令扩展包括了对哪些命令的更改或者添加。对于某条 command,也可以使用 “ command /? ” 查看文章来源:https://www.toymoban.com/news/detail-547841.html
写作不易,如果您觉得对您有用,请 “在下面一圈三连”。文章来源地址https://www.toymoban.com/news/detail-547841.html
到了这里,关于【WINDOWS / DOS 批处理】命令扩展的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!