开发手册 欢迎您!
软件开发者资料库

批处理脚本 - 返回代码

批处理脚本返回代码 - 从简单和简单的步骤学习批处理脚本从基本概念到高级概念,包括概述,环境,命令,文件,语法,变量,注释,字符串,数组,决策,操作符,日期和时间,输入/输出,返回代码,功能,进程,别名,设备,注册表,网络,打印,调试,日志记录。

默认情况下,当命令行执行完成时,它应该在执行成功时返回零,或者在执行失败时返回非零.当批处理脚本在执行失败后返回非零值时,非零值将指示错误编号是多少.然后我们将使用错误号来确定错误的内容并相应地解决它.

以下是常见的退出代码及其描述.

错误代码描述
0程序已成功完成.
1功能不正确.表示Action已尝试在Windows命令提示符cmd.exe中执行未识别的命令.
2系统找不到指定的文件.表示在指定位置找不到该文件.
3系统找不到指定的路径.表示找不到指定的路径.
5访问被拒绝.表示用户无权访问指定资源.

9009

0x2331

程序无法识别作为内部或外部命令,可操作程序或批处理文件.表示配置操作时命令,应用程序名称或路径拼写错误.

221225495

0xC0000017

-  1073741801

虚拟内存不足.

It表示Windows内存不足.

3221225786

0xC000013A

-  1073741510

应用程序因CTRL + C而终止.表示应用程序已被用户的键盘输入CTRL + C或CTRL +中断或关闭命令提示符窗口终止.

3221225794

0xC0000142

-  1073741502

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

错误级别

环境变量%ERRORLEVEL%包含上次执行的程序或脚本的返回码.

默认情况下,检查ERRORLEVEL的方法是通过以下代码.

语法

IF %ERRORLEVEL% NEQ 0 (    DO_Something )


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

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

使用EXIT/B< exitcodes>在批处理文件的末尾返回自定义返回代码.

环境变量%ERRORLEVEL%包含批处理文件中的最新错误级别,这是执行的最后一个命令的最新错误代码.在批处理文件中,使用环境变量而不是常量值总是一个好习惯,因为同一个变量会在不同的计算机上扩展为不同的值.

让我们看一个简单的例子关于如何从批处理文件中检查错误代码.

示例

假设我们有一个名为Find.cmd的批处理文件,其中包含以下内容:码.在代码中,我们已经明确提到我们如果找不到名为lists.txt的文件,那么我们应该将errorlevel设置为7.同样,如果我们看到变量userprofile没有定义,那么我们应该将errorlevel代码设置为9.

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


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

Call Find.cmdif errorlevel gtr 0 exit echo "Successful completion"

输出

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

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

  • 如果变量userprofile不存在,那么什么都不会显示在控制台输出中.

  • 如果上述两个条件都通过,则命令提示符中将显示字符串"Successful completion".

循环

在决策制定章节中,我们看到了一个接一个地执行的语句顺序的方式.此外,还可以在批处理脚本中完成实现,以改变程序逻辑中的控制流.然后将它们分类为控制语句流.

S.No循环&说明
1发表声明

批处理脚本中没有直接的while语句,但是我们可以通过使用if语句和标签.

2For Statement  -  List Implementations

"FOR"构造为批处理提供循环功能文件.以下是使用值列表的'for'语句的通用结构.

3循环范围

'for'语句还具有移动一系列值的能力.以下是该声明的一般形式.

4经典循环实施

以下是经典'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语句用于改变任何编程语言中循环内部的控制流. break语句通常用于循环结构,用于立即终止最内层的封闭循环.