批处理 - 返回码

批处理 - 返回码 首页 / 批处理入门教程 / 批处理 - 返回码

默认情况下,当命令行执行完成时,它应该在执行成功时返回零,或者在执行失败时返回非零,当批处理脚本执行失败后返回非零值时,该非零值将指示错误号,然后,无涯教程将使用错误号来确定错误的根源并相应地解决。

以下是常见的退出代码及其说明。

错误代码说明
0程序成功完成。
1功能不正确。表示"操作"已尝试在Windows命令提示符cmd.exe中执行无法识别的命令。
2系统找不到指定的文件。
3系统找不到指定的路径。表
5访问被拒绝,表示用户无权访问指定资源。

9009

0x2331

程序未被识别为内部或外部命令,可操作程序或批处理文件。

221225495

0xC0000017

-1073741801

没有足够的虚拟内存。

这表明Windows内存不足。

3221225786

0xC000013A

-1073741510

应用程序由于CTRL + C而终止,指示该应用程序已由用户的键盘输入CTRL + C或CTRL + Break或关闭命令提示符窗口终止。

3221225794

0xC0000142

-1073741502

应用程序无法正确初始化,表示该应用程序已在当前用户没有访问权限的桌面上启动,另一个可能的原因是gdi32.dll或user32.dll未能初始化。

错误等级

环境变量%ERRORLEVEL%包含最后执行的程序或脚本的返回码。

默认情况下,检查错误级别的方法是通过以下代码。

IF %ERRORLEVEL% NEQ 0 ( 
   DO_Something 
)

通常在批处理文件的末尾使用命令EXIT/B%ERRORLEVEL%从批处理文件返回错误代码。

批处理文件末尾的EXIT/B将停止执行批处理文件。

假设有一个名为Find.cmd的批处理文件,其中包含以下代码,在代码中,清楚地提到,如果找不到名为lists.txt的文件,则应将错误级别设置为7。类似地,如果看到未定义变量userprofile,则应将错误级别代码设置为9。

if not exist c:\lists.txt exit 7 
if not defined userprofile exit 9 
exit 0

假设还有另一个名为App.cmd的文件,该文件首先调用Find.cmd。现在,如果Find.cmd返回的错误将错误级别设置为大于0,则它将退出程序。在下面的批处理文件中,调用Find.cnd查找之后,它实际上检查错误级别是否大于0。

Call Find.cmd

if errorlevel gtr 0 exit 
echo Successful completion

在上面的程序中,可以将以下场景作为输出-

无涯教程网

  • 如果文件c:\lists.txt不存在,那么控制台输出中将不会显示任何内容。

  • 如果变量userprofile不存在,那么控制台输出中将不显示任何内容。

  • 如果以上两个条件均通过,则字符串"Successful completion"将显示在命令提示符下。

Loops循环

在决策一章中,无涯教程看到了依次执行的语句。此外,也可以在批处理脚本中完成实现,以更改程序逻辑中的控制流。然后将它们分类为控制语句流。

S.No 描述
1 While Statement Implementation

批处理脚本中没有直接的while语句,但是可以使用if语句和标签很容易地实现此循环。

2 For Statement - List Implementations

" FOR"构造为批处理文件提供循环功能。

3 Looping through Ranges

" for"语句还可以在一系列值之间移动。

4 Classic for Loop Implementation

以下是大多数编程语言中可用的经典" for"语句。

遍历命令行参数

" for"语句也可用于检查命令行参数,以下示例说明了如何使用" for"语句循环遍历命令行参数。

@ECHO OFF 
:Loop 

IF "%1"=="" GOTO completed 
FOR %%F IN (%1) DO echo %%F 
SHIFT 
GOTO Loop 
:completed

假设上面的代码存储在一个名为Test.bat的文件中。如果批处理文件将命令行参数1,2和3作为Test.bat 1 2 3传递,则上述命令将产生以下输出。

1 
2 
3
S.No描述
1 Break Statement Implementation

break语句用于更改任何编程语言中循环内部的控制流。 break语句通常用于循环结构中,并用于立即终止最内层的循环。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Linux实战技能100讲 -〔尹会生〕

职场求生攻略 -〔臧萌〕

分布式数据库30讲 -〔王磊〕

说透5G -〔杨四昌〕

运维监控系统实战笔记 -〔秦晓辉〕

现代C++20实战高手课 -〔卢誉声〕

快速上手C++数据结构与算法 -〔王健伟〕

零基础GPT应用入门课 -〔林健(键盘)〕

结构思考力 · 透过结构看问题解决 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)