bat和cmd使用起来有什么区别?

bat和cmd使用起来有什么区别?

我试过谷歌,但也许谷歌魔力不好,因为我没有找到合适的解释,

我有一个用于停止和启动某些服务的批处理文件。然后使用服务帐户在任务计划程序中安排此批处理文件。

如果我将扩展名从 .bat 更改为 .cmd,则脚本将失败,因为用户似乎没有停止和启动服务的权限。

但是为什么仅仅改变脚本的扩展名就会改变行为呢?

答案1

bat和cmd使用起来有什么区别?

BAT 是为了与 DOS 的命令解释器 COMMAND.COM 交互而创建的。Microsoft 将大多数 DOS 命令纳入了其名为 CMD.EXE 的新解释器中。CMD 是为了与 CMD.EXE 交互而创建的,它破坏了与 COMMAND.COM 的兼容性。另一个关键区别在于它们如何处理错误级别变量。使用 BAT 时,此变量仅在发生实际错误时才会更改,并且每个命令成功执行时状态不会发生变化。对于 CMD 来说情况并非如此,因为即使没有发生错误,错误级别变量仍会改变状态。程序员在创建复杂的脚本时应注意这一点,因为它可能会造成一点混乱。

除了这些细微的差别之外,CMD 和 BAT 是完全相同的。大多数创建简单脚本来清除或传输文件的用户不会遇到任何问题。对于较新版本的 Windows 用户来说,BAT 和 CMD 几乎可以互换,因为 CMD.EXE 会解释并执行两个文件中的命令。虽然大多数用户都知道这个事实,但许多有机会使用 DOS 及其批处理文件的老年人仍然使用 BAT 扩展名;只是出于习惯和熟悉。

概括:

1. BAT 扩展名用于 DOS 和 Windows,而 CMD 扩展名用于 Windows NT 命令脚本

2. BAT 扩展名可以由 COMMAND.COM 和 CMD.EXE 解释,而 CMD 扩展名只能由 CMD.EXE 解释

3. CMD 中的错误级别始终会改变状态,但 BAT 中只会在发生错误时才会改变状态

来源


如果我将扩展名从 .bat 更改为 .cmd,则脚本将失败

为了完全准确地回答您问题的这一部分,需要披露您所使用的逻辑,以便了解它如何帮助解决问题。

否则,我会认为您看到的失败与.CMD脚本如何处理错误级别差异或某些组策略或其他限制有关,这些限制会影响 的解释,CMD.exe而不是运行和解释时的影响COMMAND.COM


更多资源

相关内容