【WINDOWS / DOS 批处理】命令扩展

在 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  /? ” 查看

写作不易,如果您觉得对您有用,请 “在下面一圈三连”

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值