.cmd 和 .bat 文件有什么区别?

.cmd 和 .bat 文件有什么区别?

只是好奇。我们公司的“酷”人总是使用 *.cmd,但没人能向我解释其中的区别。

答案1

答案2

每个命令语言的语义存在差异(.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 命令语言的当前、更性感的版本,这就是酷孩子使用它们的原因。

答案3

根据维基百科:

.bat:Microsoft 用于批处理文件的第一个扩展名。此扩展名可以在大多数 Microsoft 操作系统中运行,包括 MS-DOS 和大多数版本的 Microsoft Windows。

.cmd:基于 Windows NT 的系统将较新的 .cmd 扩展名描述为“Windows NT 命令脚本”,这很有用,因为使用 .cmd 扩展名而不是 .bat 扩展名意味着早期版本的 Windows 将不知道如何运行它,这样它们就不会尝试将命令误认为 COMMAND.COM 样式的文件,并且由于缺少命令扩展而无法运行新样式的命令,导致脚本只能部分运行,这可能会造成损害(例如,无法检查文件是否成功复制,然后还是删除原始文件)。

.cmd 和 .bat 文件处理之间唯一已知的区别是:在 .cmd 文件中,即使受命令扩展影响的命令成功执行,ERRORLEVEL 变量也会发生变化(当启用命令扩展时);而在 .bat 文件中,ERRORLEVEL 变量仅在出现错误时才会发生变化。

希望这可以帮助。

答案4

我第一次看到 .cmd 格式是在 OS/2 下使用的。如果你用 DOS 术语来思考,它就像是强化版的 .bat 文件。.bat 文件最早是在 DOS 类型的操作系统下引入的。除了开始使用高级功能时,很多语法都是相似的。此外,.cmd 文件可能无法在 16 位环境(win98)下工作,而 .bat 文件可能在所有环境中都可以工作。

相关内容