对于 Windows 系统,“.bat”或“.cmd”扩展名会对我的脚本产生什么影响吗?

对于 Windows 系统,“.bat”或“.cmd”扩展名会对我的脚本产生什么影响吗?

假设我的 shell 脚本完全基于 DOS 命令(dir、cd 等,而不是 VBS 或 PowerShell 命令),使用 .cmd 或 .bat 扩展名作为其名称会改变什么吗?我的意思是,如果使用 .cmd 或 .bat 扩展名,它将以相同的方式和相同的解释器执行吗?

答案1

有一个很好的答案堆栈溢出

所以,它不会影响您的命令。ERRORLEVEL 的处理方式不同。在 cmd 中,无论是否有错误,都会设置 ERRORLEVEL。

仅当出现错误时,Bat 才会执行此操作。

维基百科

来自维基百科的新引文

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

上述维基百科引文的来源实际上是基于本新闻组发布

就 CMD.EXE 而言,.CMD 和 .BAT 之间的区别是:启用扩展后,.CMD 文件中的 PATH/APPEND/PROMPT/SET/ASSOC 都会设置 ERRORLEVEL,无论是否出现错误。.BAT 仅在出现错误时设置 ERRORLEVEL。

请注意,它与维基百科文本相比,在差异方面有更多限制,但也值得明确提及,因为马克·兹比科夫斯基他自己——在我看来,这给了他巨大的可信度奖励。

相关内容