只是好奇。 我们公司的“酷”人总是使用* .cmd,而没有人能够向我解释差异。
这里是来自Stackoverflow的一个很好的讨论 。
每种命令语言都有语义差异( .bat
文件获取兼容版本)。 这些脚本中的一些可以从这里通过脚本来说明:
@echo off&setlocal ENABLEEXTENSIONS call :func&&echo/I'm a cmd||echo/I'm a bat goto :EOF :func md;2>nul set var=1
基本上, .cmd
文件可以获得MS命令语言的最新版本,这就是为什么很酷的孩子们使用它们的原因。
根据维基百科:
.bat:Microsoft用于batch file的第一个扩展。 此扩展可以在大多数Microsoft操作系统中运行,包括MS-DOS和大多数Microsoft Windows版本。
.cmd:较新的.cmd扩展名被Windows NT系统描述为“Windows NT命令脚本”,并且很有帮助,因为使用.cmd扩展名而不是.bat扩展名意味着Windows的早期版本不知道如何运行它,这样他们不会尝试和错误的COMMAND.COM样式文件的命令,并由于缺乏命令扩展而无法运行新的样式命令,导致脚本只能部分运行,可能会损坏(用于例如;无法检查文件的成功复制,然后删除原始文件)。
.cmd和.bat文件处理之间唯一已知的区别是在.cmd文件中,ERRORLEVELvariables即使在受命令扩展(启用命令扩展)影响的成功命令时也会更改,而在.bat文件中,ERRORLEVELvariables仅在错误时才会更改。
希望这可以帮助。
理论上.cmd更“真实”:),因为.bat是旧DOS命令的脚本,.cmd是Windows NT的cmd.exe,最后一个改进了脚本。 在现实生活中,通常两者是平等的,比如在Linux中写入/ bin / sh或/ bin / bash(其实sh就是bash的意思是distros)
我第一次看到在OS / 2下使用的.cmd格式。 如果你用DOS术语思考,就像是类固醇上的.bat文件。 .bat文件首先在DOStypes的操作系统下引入。 除非您开始进入高级function,否则其他语法都是相似的。 此外,.cmd文件可能无法在16位环境(win98)中运行,而.bat文件可能适用于所有环境。