Windows 批处理 .bat 和 .cmd 文件之间的区别 您所在的位置:网站首页 windows10批处理文件的扩展名 Windows 批处理 .bat 和 .cmd 文件之间的区别

Windows 批处理 .bat 和 .cmd 文件之间的区别

2024-07-11 23:21| 来源: 网络整理| 查看: 265

COMMAND.COM 和 cmd.exe 之间的区别 Windows Batch .bat 和 .cmd 文件之间的主要区别 结论

用户通常认为 COMMAND.COM 和 cmd.exe 相同。此外,他们对批处理文件使用哪个扩展名 .bat 或 .cmd 感到困惑。

它们是相同的还是不同的,使用哪些扩展是否重要?本文将讨论所有这些问题的答案。

当我们运行批处理文件时,它们会在命令提示符中执行。批处理文件主要在 Windows NT 版本的 cmd.exe 中运行。

在旧版本中,它将在 COMMAND.COM shell 中运行。

COMMAND.COM 和 cmd.exe 之间的区别

COMMAND.COM 和 cmd.exe 是 MS-DOS 和 Windows 的命令解释器版本。COMMAND.COM 是一个用于运行 16 位程序的命令行 shell;它是一个 DOS 程序,它是启动后第一个运行的程序,它通过运行 AUTOEXEC.BAT 配置文件来设置系统。

它最初于 1980 年发布,用于 MS-DOS、Windows 95-98 和 Windows ME。它仅对设计为作为 16 位程序运行的旧程序兼容和有用,并且从那时起就没有更新。

另一方面,cmd.exe 是 COMMAND.COM 的继承者。它是为 32 位程序设计的,于 1987 年发布,用于 OS/2、Windows NT 和 Windows CE。

与 COMMAND.COM 相比,cmd.exe 提供了更好的扩展,例如详细的错误信息,支持箭头键查看命令历史,支持延迟变量扩展,并改进了内部命令。

批处理文件是一个脚本文件,可以存储命令并由命令行解释器按串行顺序执行。 .bat 文件扩展名用于 MS-DOS 和 Windows,它是第一个用于批处理文件的扩展名,而 .cmd 用于 Windows NT 系列和 OS/2。

.cmd 文件只能在 cmd.exe 中执行,因为 COMMAND.COM 无法识别此扩展名。

本教程将说明 .bat 和 .cmd 文件之间的主要区别。

Windows Batch .bat 和 .cmd 文件之间的主要区别

.bat 和 .cmd 之间的主要关键区别将在下面讨论。

ERRORLEVEL 处理

.bat 和 .cmd 以不同方式处理 ERRORLEVEL 变量。当调用 ERRORLEVEL 时,.bat 仅在发生真正错误时更改其状态,即对于诸如 append、dpath、ftype、set、path、assoc 这样的命令 , .bat 不会设置 ERRORLEVEL。

但是,在 .cmd 的情况下,它会设置 ERRORLEVEL,而不考虑真正的错误。即使成功执行,它也会将 ERRORLEVEL 重置为 0。

有时,它在编写脚本时会造成混乱,因此用户应该小心这一点。

执行顺序

环境变量 PATHEXT 控制执行顺序。执行取决于存储在 PATHEXT 变量中的变量的顺序。

如果 .bat 和 .cmd 脚本都存储在同一个文件夹中,执行不带扩展名的脚本将首先运行 .bat 文件,然后运行 ​​.cmd 文件。PATHEXT 变量的默认顺序如下:

ECHO %PATHEXT%

但是,你可以更改 PATHEXT 变量中的扩展顺序。即使你删除了 PATHEXT 变量,其顺序也将与 Windows 的 MS-DOS 版本相同。

支持

关于对 Windows 版本的支持,几乎所有 Windows 版本都支持 .cmd 文件,这与 .bat 文件的情况不同。 .bat 最初是为 MS-DOS 开发的,而 .cmd 是为 Windows NT 开发的,因此 .cmd 文件不能在非 Windows NT 系统中执行。

.bat 的脚本比 .cmd 更旧。与 .bat 文件相比,.cmd 向后兼容。

安全

关于安全性,.cmd 比 .bat 更安全。由于 .bat 文件中的命令是以串行方式存储的,并且是逐行执行的,因此更容易受到安全攻击。 .cmd 文件不按顺序执行命令,因此它们比 .bat 文件更安全。

.cmd 文件也可以通过允许查看、安装和运行 .cmd 文件的应用程序在 Android 中使用。Android 不支持 .bat 文件。

.bat 文件具有旧版本的 Microsoft 语言,因为它是早期为 MS-DOS 开发的。 .cmd 是为较新版本的 Windows 开发的编程语言和解释器。

当你运行没有任何扩展名的批处理文件时,它将以 .bat 运行,而对于 .cmd 文件扩展名,你必须输入文件名作为 filename.cmd。这种情况仅适用于两个扩展名具有相同文件名的情况; .cmd 需要提供扩展名来运行文件,而 .bat 文件直接运行程序而不需要扩展名。

如下图所示,我们有两个具有相同文件名 testfile 和不同扩展名 .bat 和 .cmd 的批处理文件。 .bat 文件存储为 Windows 批处理文件,.cmd 存储为 Windows 命令脚本。

运行 .bat 文件:

运行 .cmd 文件:

工作环境

.bat 文件设计为在 NTVDM 环境中运行,这是一个在 32 位 Windows 上运行 16 位程序的 Windows 进程。NTVDM 代表 Windows NT 虚拟 DOS 机器,执行为 ntvdm.exe。

它是系统的重要程序,为了程序的稳定运行,不应删除它。 .bat 文件在此环境中运行,因此在所有环境中都受支持,而 .cmd 文件无法在 16 位环境中执行。

此外,.cmd 文件在执行之前存储在内存中,而 .bat 文件逐行执行命令而不将它们存储在内存中。

解释器

带有 .bat 文件扩展名的批处理文件可以在 COMMAND.COM 和 cmd.exe 下运行,尽管两个解释器执行文件的方式不同。 .cmd 文件仅在 cmd.exe 中运行。

COMSPEC 环境变量用于启动批处理文件的命令行解释器。默认情况下,对于旧版本(如 MS-DOS),它设置为 COMMAND.COM。

从 Windows NT 开始,它默认为 cmd.exe。要查看其内容,请执行以下命令:

ECHO %COMSPEC%

因此,较新版本的 Windows 将在 cmd.exe 中运行。但在旧版本中,只会执行 .bat 文件。

结论

因此,我们已经讨论了批处理文件扩展名 .bat 和 .cmd 之间的基本关键区别。两者都有各自的优势。

总而言之,在 .bat 文件中工作的所有内容也应该在 .cmd 文件中工作。 .cmd 文件比 .bat 文件更快、更稳定。

使用正确的扩展取决于你的要求。但是,对于较新的版本,建议使用 .cmd 文件扩展名。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有