批处理中关于%errorlevel% 和 &&, ||判断依据, 及 编程中程序返回值的讲解



[讨论]浅谈批处理中的%errorlevel% - BAT求助&讨论 - 批处理之家 批处理_BAT_CMD_DOS_VBS_Perl_Python_PowerShell - Powered by Discuz!  http://www.bathome.net/thread-13194-1-1.html

[讨论]浅谈批处理中的%errorlevel%

#浅谈%errorlevel%#

对于%errorlevel%环境变量,大家想必是既熟悉又陌生吧。知道有这个东西的存在,但是不常用。
下面我将谈谈我对这个变量的见解,有错误请指正!

微软的Windows NT系列系统,主要是用C/C++语言写的,部分用汇编。(到了VISTA以后用的语言比较多,.NET框架占比重也比较大。)
它的命令行工具也差不多,大多是C/C++写的,部分是汇编写的(后缀是.com的文件)。

C/C++语言是写命令行工具的利器,一方面,它的语言效率高那是毫无疑问的,可以说仅次于汇编;另一方面,Windows系统提供了很多控制台程序的接口,C/C++语言可以方便的调用。

现在交代了下背景,其他废话就不多说了。
每个C/C++语言程序都有一个“主函数mian()”,下面我列举一个最简单的C/C++语言程序,后面那些是注释:
       
       
       
       
  1. #include<stdio.h>  //包含一个函数库,此句不用理解,略过
  2. int main()   //主函数,前面的 int 指这个函数有有整数的返回值
  3. {
  4.     int i;    //定义一个变量i,这个好理解
  5.     printf("请输入一个整数:")    //此句相当于批处理的 echo
  6.     scanf("%d",&i);  //用户输入 i 值,必须为数字
  7.     if(i==1)   //if语句大家都懂吧?
  8.     {
  9.            return 1;   // 前面我提到过了,main()是一个有返回值的函数
  10.                           //  这里的 return 就是返回语句,这句即为返回整数1
  11.     } else {
  12.            return 0;  //  返回整数0
  13.     }
  14. }
复制代码
代码写好了,找个工具编译,链接后,就可以得到我们的程序了,在CMD下运行,程序名为CPP.EXE:
       
       
       
       
  1. C:\Users\Broly\Desktop\VC>CPP.exe
  2. 请输入一个整数:0
  3. C:\Users\Broly\Desktop\VC>echo %errorlevel%
  4. 0
  5. C:\Users\Broly\Desktop\VC>CPP.exe
  6. 请输入一个整数:1
  7. C:\Users\Broly\Desktop\VC>echo %errorlevel%
  8. 1
  9. C:\Users\Broly\Desktop\VC>CPP.exe
  10. 请输入一个整数:2
  11. C:\Users\Broly\Desktop\VC>echo %errorlevel%
  12. 0
  13. C:\Users\Broly\Desktop\VC>CPP.exe
  14. 请输入一个整数:3
  15. C:\Users\Broly\Desktop\VC>echo %errorlevel%
  16. 0
  17. C:\Users\Broly\Desktop\VC>CPP.exe
  18. 请输入一个整数:4
  19. C:\Users\Broly\Desktop\VC>echo %errorlevel%
  20. 0
复制代码
大家发现什么没?没发现的,你再看看源代码中的 if 语句。
我的理解为:当一个程序运行完成后,main()函数的返回值会临时保存在 %errorlevel% 变量中。
这就是 %errorlevel% 为什么每个程序运行后都不一定相同的原因。
不过根据经验,一般C/C++语言程序,如果程序没有运行异常的话都会返回一个 0 值,即 return 0;否则将返回一个非零值。
%errorlevel% 具体取值还是要看写程序那个人如何取舍。
而且,不是每个程序都是C语言写的,也不是每个C语言程序都有返回值或者返回为整数。
我个人猜测,没有返回值的程序,%errorlevel% 的值将会是 0 。
win10x64_build10586测试,
控制台程序1.exe   return 0时, 1.exe && echo %errorlevel%_yes || echo no, 结果会输出0_yes
控制台程序1.exe   return 123(非0值)时, 1.exe && echo yes || echo %errorlevel%_no, 结果会输出123_no






///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

批处理内部命令对错误返回码errorlevel的影响 - 批处理教程&资料 - 批处理之家 批处理_BAT_CMD_DOS_VBS_Perl_Python_PowerShell - Powered by Discuz!  http://bbs.bathome.net/thread-7479-1-1.html


很早的请求
最近终于有了些分析结果

最终结论
||确实与& && 不同
如果其左侧语句执行返回非0的值
||会将这个返回值写入errorlevel


9楼链接中的语句
(for /f %%a in ('dir /ad /b test') do break)
在当前目录不存在test时
它的返回值为1(实际是cmd /c dir /ad /b test的返回值)
只是for语句单独执行时这个返回值并不写入errorlevel
而当与||联用时
||会将其返回值写入errorlevel

顺便解答一下7楼的问题
这里出现了一点认识上的混淆
几乎所有命令都会有返回值
但是并非所有返回值都会写入errorlevel
比如echo命令执行后会返回零值

但这个零值并不写入errorlevel(推测是为了向下兼容DOS)
而&& || 是依据返回值作为判断条件的
这也是为什么echo没有写errorlevel
却仍然可以放在&&与||的左侧参与逻辑运算

另外的测试分析发现
errorlevel也不全是函数的返回值
比如执行不存在的命令时errorlevel是9009
但这条语句的返回值实际上是1
因此下面语句的输出结果是1而非9009
$xxx || echo !errorlevel!
而如果使用使用以下命令则可以看出||也可以写入非1的errorlevel
replace $xxx $yyy || echo !errorlevel!




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

[讨论]对批处理中errorlevel的几点猜测 - BAT求助&讨论 - 批处理之家 批处理_BAT_CMD_DOS_VBS_Perl_Python_PowerShell - Powered by Discuz!  http://www.bathome.net/viewthread.php?tid=14277&rpid=94018&ordertype=0&page=1#pid94018


通过以下测试可以确认
||并不是根据errorlevel来判断是否执行右侧的语句

Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.

C:\Documents and Settings\Administrator>xx
'xx' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Documents and Settings\Administrator>echo %errorlevel%
9009

C:\Documents and Settings\Administrator>echo not set errorlevel
not set errorlevel

C:\Documents and Settings\Administrator>echo %errorlevel%
9009

C:\Documents and Settings\Administrator>echo not set errorlevel || echo not run
not set errorlevel

C:\Documents and Settings\Administrator>xx || echo run
'xx' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
run

C:\Documents and Settings\Administrator>


根据以下测试可以证明
||会在左侧代码未成功完成时置errorlevel为1

C:\Documents and Settings\Administrator>xx
'xx' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Documents and Settings\Administrator>echo %errorlevel%
9009

C:\Documents and Settings\Administrator>echo not set errorlevel || echo not run
not set errorlevel

C:\Documents and Settings\Administrator>echo %errorlevel%
9009

C:\Documents and Settings\Administrator>xx || echo run
'xx' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
run

C:\Documents and Settings\Administrator>echo %errorlevel%
1


根据以下测试可以证明
||是在右侧命令执行之前置errorlevel,而非整条语句执行完成后

C:\Documents and Settings\Administrator>xx
'xx' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Documents and Settings\Administrator>echo %errorlevel%
9009

C:\Documents and Settings\Administrator>xx || if errorlevel 1 if not errorlevel 2 echo errorlevel == 1
'xx' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
errorlevel == 1


综合以上论断
可以确认在||在左侧语句未成功完成时
会置errorlevel为1
同时启动执行右侧的语句




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

批处理各命令错误返回值errorlevel一览 - 批处理教程&资料 - 批处理之家 批处理_BAT_CMD_DOS_VBS_Perl_Python_PowerShell - Powered by Discuz!  http://bbs.bathome.net/thread-3603-1-1.html


批处理各命令错误返回值errorlevel一览

本资源来源于网络。

ATTRIB.EXE
(a) Target file/folder not found                = ERRORLEVEL 1
(b) Invalid switch                               = ERRORLEVEL 1
(c) Sharing violation (target file in use)       = ERRORLEVEL 1
(d) Invalid drive specification                    = ERRORLEVEL 1
(e) Drive not ready (either Abort or Fail reply) = ERRORLEVEL 1
(f) Invalid/wrong number of parameters          = ERRORLEVEL 1

CHOICE.COM
(a) With reply list, and reply nn in list       = ERRORLEVEL nn
(This reply list position = return code is main use of CHOICE)
(b) Invalid switch                               = ERRORLEVEL 255
(c) Invalid switch syntax                          = ERRORLEVEL 255
(d) Timeout default not in reply list              = ERRORLEVEL 255
(e) choice /?                                      = ERRORLEVEL 255

CSCRIPT.EXE
(a) Cannot find script file                      = ERRORLEVEL 1
(b) No script engine for file extension          = ERRORLEVEL 1
(c) No file extension in script file             = ERRORLEVEL 1
(d) Drive not ready                                = ERRORLEVEL 1
(There is no Abort, Retry, Fail stall)

DELTREE.EXE
(a) Required parameter missing                   = ERRORLEVEL 1
(b) Invalid switch                               = ERRORLEVEL 1
(c) deltree /?                                  = ERRORLEVEL 1
(d) Not ready reading drive (Abort reply)       = ERRORLEVEL 18
(Note: Fail reply returns ERRORLEVEL 0)

EXTRACT.EXE
(a) Invalid switch                               = ERRORLEVEL 1

FC.EXE
(a) Insufficient number of filespecs             = ERRORLEVEL 1
(b) Too many filenames on command line          = ERRORLEVEL 1
(c) Sharing Violation + Abort reply             = ERRORLEVEL 5
(Note: Fail reply returns ERRORLEVEL 0)
(d) Drive not ready                                = ERRORLEVEL 18
(Note: Fail reply returns ERRORLEVEL 0)

FIND.EXE
(a) Target string found (=f0und)                 = ERRORLEVEL 0
(b) Target string missing (=m1ssing)             = ERRORLEVEL 1
(c) find /?                                     = ERRORLEVEL 1
(d) Parameter format not correct                = ERRORLEVEL 2
(e) Specified file to search not found          = ERRORLEVEL 2
(f) Specified file in use + Fail reply          = ERRORLEVEL 2
(g) Drive not ready + Fail reply                = ERRORLEVEL 2
(h) Specified file in use + Abort reply          = ERRORLEVEL 5
(i) Drive not ready + Abort reply                = ERRORLEVEL 5

FORMAT.COM
(a) Drive not ready                                = ERRORLEVEL 4
(There is no Abort, Retry, Fail stall)

FTP.EXE
(a) Brief help (use: ftp -h for Brief help)        = ERRORLEVEL 2
(b) Error opening script file (file missing)    = ERRORLEVEL 2
(c) Invalid switch                               = ERRORLEVEL 2

KEYB.COM
(a) Invalid switch                               = ERRORLEVEL 1
(b) Invalid keyboard code specified             = ERRORLEVEL 1
(c) keyb /?                                     = ERRORLEVEL 1

MEM.EXE
(a) Invalid switch                               = ERRORLEVEL 1

MODE.COM
(a) Invalid parameter                            = ERRORLEVEL 1
(b) Invalid switch                               = ERRORLEVEL 1

MORE.COM
(a) Invalid switch (MORE doesn't accept switches)   = ERRORLEVEL 1
(b) Drive not ready (Abort reply)                = ERRORLELEL 5
(Note: Fail reply returns ERRORLEVEL 0)

MOVE.EXE
(a) Required parameter missing                   = ERRORLEVEL 1
(b) Unable to create destination                = ERRORLEVEL 1
(c) Unable to open source                          = ERRORLEVEL 1
(you see this when trying to MOVE a folder from one drive
    to another. You need to use XCOPY /S followed by DELTREE,
    since MOVE won't handle folder moves across drives)
(d) Sharing violation + Fail reply                 = ERRORLEVEL 1
(Note: file is nevertheless COPIED, not moved, in this case)
(e) Sharing violation + Abort reply             = ERRORLEVEL 5
(Note: file is nevertheless COPIED, not moved, in this case)
(f) Drive not ready (Abort reply)                = ERRORLEVEL 18
(Note: Fail reply - unusually - returns ERRORLEVEL 1)

PING.EXE
(a) Unknown host                                   = ERRORLEVEL 1
(usually=name not found on DomainNameServer)
(b) Brief help (with no parameter)                 = ERRORLEVEL 1
Note: for PING Brief help with /? switch, ERRORLEVEL is 0
(c) Invalid switch                               = ERRORLEVEL 1
(and displays the Brief help as well)
(d) Interrupted with [Ctrl-C]                   = ERRORLEVEL 255

SORT.EXE
(a) Invalid switch                               = ERRORLEVEL 1
(b) Drive not ready (Abort reply)                = ERRORLEVEL 15
(Note: Fail reply returns ERRORLEVEL 0)

START.EXE
(a) start /? (real mode)                         = ERRORLEVEL 1
(b) start /? (GUI)                               = ERRORLEVEL 255
(c) Can't find file specified for START          = ERRORLEVEL 255
(d) No file association for specified file       = ERRORLEVEL 255
(e) Drive not ready                                = ERRORLEVEL 255
(There is no Abort, Retry, Fail stall)

SUBST.EXE
(a) Invalid parameter                            = ERRORLEVEL 1
(b) Invalid switch                               = ERRORLEVEL 1
(c) Path not found                               = ERRORLEVEL 1
(d) Drive not ready (Abort reply)                = ERRORLEVEL 21
(Note: Fail reply - unusually - returns ERRORLEVEL 1)

TRACERT.EXE
(a) Unable to resolve target system name           = ERRORLEVEL 1
(usually=name not found on DomainNameServer)
(b) Invalid switch                               = ERRORLEVEL 1
(c) Brief help (no parameter)                   = ERRORLEVEL 1
(d) Interrupted with [Ctrl-C]                   = ERRORLEVEL 255
Note: for TRACERT Brief help, type command without parameters

XCOPY.EXE
(a) File not found                               = ERRORLEVEL 1
(b) Invalid date in /d switch                   = ERRORLEVEL 4
(c) Invalid number of parameters                = ERRORLEVEL 4
(d) Invalid parameter                            = ERRORLEVEL 4
(e) Device not ready                            = ERRORLEVEL 4
(f) Unable to create directory                   = ERRORLEVEL 4
(g) System can't find file                      = ERRORLEVEL 5




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


System Error Codes (0-499) (Windows)  https://technet.microsoft.com/zh-cn/magazine/ms681382(en-us,VS.85).aspx


System Error Codes (0-499)

Note  

The information on this page is intended to be used by programmers so that the software they write can better deal with errors. If you are an end-user that is experiencing difficulty with an application you are installing or running, contact customer support for the software that is displaying the error message. To obtain support for a Microsoft product, go to http://support.microsoft.com.

The System Error Codes are very broad. Each one can occur in one of many hundreds of locations in the system. Consequently the descriptions of these codes cannot be very specific. Use of these codes requires some amount of investigation and analysis. You need to note both the programmatic and the run-time context in which these errors occur. Because these codes are defined in WinError.h for anyone to use, sometimes the codes are returned by non-system software. Sometimes the code is returned by a function deep in the stack and far removed from your code that is handling the error.

The following list describes system error codes (errors 0 to 499). They are returned by the GetLastErrorfunction when many functions fail. To retrieve the description text for the error in your application, use the FormatMessage function with the FORMAT_MESSAGE_FROM_SYSTEM flag.

ERROR_SUCCESS
0 (0x0)

The operation completed successfully.

ERROR_INVALID_FUNCTION
1 (0x1)

Incorrect function.

ERROR_FILE_NOT_FOUND
2 (0x2)

The system cannot find the file specified.

ERROR_PATH_NOT_FOUND
3 (0x3)

The system cannot find the path specified.

ERROR_TOO_MANY_OPEN_FILES
4 (0x4)

The system cannot open the file.

ERROR_ACCESS_DENIED
5 (0x5)

Access is denied.

ERROR_INVALID_HANDLE
6 (0x6)

The handle is invalid.

ERROR_ARENA_TRASHED
7 (0x7)

The storage control blocks were destroyed.

ERROR_NOT_ENOUGH_MEMORY
8 (0x8)

Not enough storage is available to process this command.

ERROR_INVALID_BLOCK
9 (0x9)

The storage control block address is invalid.

ERROR_BAD_ENVIRONMENT
10 (0xA)

The environment is incorrect.

ERROR_BAD_FORMAT
11 (0xB)

An attempt was made to load a program with an incorrect format.

ERROR_INVALID_ACCESS
12 (0xC)

The access code is invalid.

ERROR_INVALID_DATA
13 (0xD)

The data is invalid.

ERROR_OUTOFMEMORY
14 (0xE)

Not enough storage is available to complete this operation.

ERROR_INVALID_DRIVE
15 (0xF)

The system cannot find the drive specified.

ERROR_CURRENT_DIRECTORY
16 (0x10)

The directory cannot be removed.

ERROR_NOT_SAME_DEVICE
17 (0x11)

The system cannot move the file to a different disk drive.

ERROR_NO_MORE_FILES
18 (0x12)

There are no more files.

ERROR_WRITE_PROTECT
19 (0x13)

The media is write protected.

ERROR_BAD_UNIT
20 (0x14)

The system cannot find the device specified.

ERROR_NOT_READY
21 (0x15)

The device is not ready.

ERROR_BAD_COMMAND
22 (0x16)

The device does not recognize the command.

ERROR_CRC
23 (0x17)

Data error (cyclic redundancy check).

ERROR_BAD_LENGTH
24 (0x18)

The program issued a command but the command length is incorrect.

ERROR_SEEK
25 (0x19)

The drive cannot locate a specific area or track on the disk.

ERROR_NOT_DOS_DISK
26 (0x1A)

The specified disk or diskette cannot be accessed.

ERROR_SECTOR_NOT_FOUND
27 (0x1B)

The drive cannot find the sector requested.

ERROR_OUT_OF_PAPER
28 (0x1C)

The printer is out of paper.

ERROR_WRITE_FAULT
29 (0x1D)

The system cannot write to the specified device.

ERROR_READ_FAULT
30 (0x1E)

The system cannot read from the specified device.

ERROR_GEN_FAILURE
31 (0x1F)

A device attached to the system is not functioning.

ERROR_SHARING_VIOLATION
32 (0x20)

The process cannot access the file because it is being used by another process.

ERROR_LOCK_VIOLATION
33 (0x21)

The process cannot access the file because another process has locked a portion of the file.

ERROR_WRONG_DISK
34 (0x22)

The wrong diskette is in the drive. Insert %2 (Volume Serial Number: %3) into drive %1.

ERROR_SHARING_BUFFER_EXCEEDED
36 (0x24)

Too many files opened for sharing.

ERROR_HANDLE_EOF
38 (0x26)

Reached the end of the file.

ERROR_HANDLE_DISK_FULL
39 (0x27)

The disk is full.

ERROR_NOT_SUPPORTED
50 (0x32)

The request is not supported.

ERROR_REM_NOT_LIST
51 (0x33)

Windows cannot find the network path. Verify that the network path is correct and the destination computer is not busy or turned off. If Windows still cannot find the network path, contact your network administrator.

ERROR_DUP_NAME
52 (0x34)

You were not connected because a duplicate name exists on the network. If joining a domain, go to System in Control Panel to change the computer name and try again. If joining a workgroup, choose another workgroup name.

ERROR_BAD_NETPATH
53 (0x35)

The network path was not found.

ERROR_NETWORK_BUSY
54 (0x36)

The network is busy.

ERROR_DEV_NOT_EXIST
55 (0x37)

The specified network resource or device is no longer available.

ERROR_TOO_MANY_CMDS
56 (0x38)

The network BIOS command limit has been reached.

ERROR_ADAP_HDW_ERR
57 (0x39)

A network adapter hardware error occurred.

ERROR_BAD_NET_RESP
58 (0x3A)

The specified server cannot perform the requested operation.

ERROR_UNEXP_NET_ERR
59 (0x3B)

An unexpected network error occurred.

ERROR_BAD_REM_ADAP
60 (0x3C)

The remote adapter is not compatible.

ERROR_PRINTQ_FULL
61 (0x3D)

The printer queue is full.

ERROR_NO_SPOOL_SPACE
62 (0x3E)

Space to store the file waiting to be printed is not available on the server.

ERROR_PRINT_CANCELLED
63 (0x3F)

Your file waiting to be printed was deleted.

ERROR_NETNAME_DELETED
64 (0x40)

The specified network name is no longer available.

ERROR_NETWORK_ACCESS_DENIED
65 (0x41)

Network access is denied.

ERROR_BAD_DEV_TYPE
66 (0x42)

The network resource type is not correct.

ERROR_BAD_NET_NAME
67 (0x43)

The network name cannot be found.

ERROR_TOO_MANY_NAMES
68 (0x44)

The name limit for the local computer network adapter card was exceeded.

ERROR_TOO_MANY_SESS
69 (0x45)

The network BIOS session limit was exceeded.

ERROR_SHARING_PAUSED
70 (0x46)

The remote server has been paused or is in the process of being started.

ERROR_REQ_NOT_ACCEP
71 (0x47)

No more connections can be made to this remote computer at this time because there are already as many connections as the computer can accept.

ERROR_REDIR_PAUSED
72 (0x48)

The specified printer or disk device has been paused.

ERROR_FILE_EXISTS
80 (0x50)

The file exists.

ERROR_CANNOT_MAKE
82 (0x52)

The directory or file cannot be created.

ERROR_FAIL_I24
83 (0x53)

Fail on INT 24.

ERROR_OUT_OF_STRUCTURES
84 (0x54)

Storage to process this request is not available.

ERROR_ALREADY_ASSIGNED
85 (0x55)

The local device name is already in use.

ERROR_INVALID_PASSWORD
86 (0x56)

The specified network password is not correct.

ERROR_INVALID_PARAMETER
87 (0x57)

The parameter is incorrect.

ERROR_NET_WRITE_FAULT
88 (0x58)

A write fault occurred on the network.

ERROR_NO_PROC_SLOTS
89 (0x59)

The system cannot start another process at this time.

ERROR_TOO_MANY_SEMAPHORES
100 (0x64)

Cannot create another system semaphore.

ERROR_EXCL_SEM_ALREADY_OWNED
101 (0x65)

The exclusive semaphore is owned by another process.

ERROR_SEM_IS_SET
102 (0x66)

The semaphore is set and cannot be closed.

ERROR_TOO_MANY_SEM_REQUESTS
103 (0x67)

The semaphore cannot be set again.

ERROR_INVALID_AT_INTERRUPT_TIME
104 (0x68)

Cannot request exclusive semaphores at interrupt time.

ERROR_SEM_OWNER_DIED
105 (0x69)

The previous ownership of this semaphore has ended.

ERROR_SEM_USER_LIMIT
106 (0x6A)

Insert the diskette for drive %1.

ERROR_DISK_CHANGE
107 (0x6B)

The program stopped because an alternate diskette was not inserted.

ERROR_DRIVE_LOCKED
108 (0x6C)

The disk is in use or locked by another process.

ERROR_BROKEN_PIPE
109 (0x6D)

The pipe has been ended.

ERROR_OPEN_FAILED
110 (0x6E)

The system cannot open the device or file specified.

ERROR_BUFFER_OVERFLOW
111 (0x6F)

The file name is too long.

ERROR_DISK_FULL
112 (0x70)

There is not enough space on the disk.

ERROR_NO_MORE_SEARCH_HANDLES
113 (0x71)

No more internal file identifiers available.

ERROR_INVALID_TARGET_HANDLE
114 (0x72)

The target internal file identifier is incorrect.

ERROR_INVALID_CATEGORY
117 (0x75)

The IOCTL call made by the application program is not correct.

ERROR_INVALID_VERIFY_SWITCH
118 (0x76)

The verify-on-write switch parameter value is not correct.

ERROR_BAD_DRIVER_LEVEL
119 (0x77)

The system does not support the command requested.

ERROR_CALL_NOT_IMPLEMENTED
120 (0x78)

This function is not supported on this system.

ERROR_SEM_TIMEOUT
121 (0x79)

The semaphore timeout period has expired.

ERROR_INSUFFICIENT_BUFFER
122 (0x7A)

The data area passed to a system call is too small.

ERROR_INVALID_NAME
123 (0x7B)

The filename, directory name, or volume label syntax is incorrect.

ERROR_INVALID_LEVEL
124 (0x7C)

The system call level is not correct.

ERROR_NO_VOLUME_LABEL
125 (0x7D)

The disk has no volume label.

ERROR_MOD_NOT_FOUND
126 (0x7E)

The specified module could not be found.

ERROR_PROC_NOT_FOUND
127 (0x7F)

The specified procedure could not be found.

ERROR_WAIT_NO_CHILDREN
128 (0x80)

There are no child processes to wait for.

ERROR_CHILD_NOT_COMPLETE
129 (0x81)

The %1 application cannot be run in Win32 mode.

ERROR_DIRECT_ACCESS_HANDLE
130 (0x82)

Attempt to use a file handle to an open disk partition for an operation other than raw disk I/O.

ERROR_NEGATIVE_SEEK
131 (0x83)

An attempt was made to move the file pointer before the beginning of the file.

ERROR_SEEK_ON_DEVICE
132 (0x84)

The file pointer cannot be set on the specified device or file.

ERROR_IS_JOIN_TARGET
133 (0x85)

A JOIN or SUBST command cannot be used for a drive that contains previously joined drives.

ERROR_IS_JOINED
134 (0x86)

An attempt was made to use a JOIN or SUBST command on a drive that has already been joined.

ERROR_IS_SUBSTED
135 (0x87)

An attempt was made to use a JOIN or SUBST command on a drive that has already been substituted.

ERROR_NOT_JOINED
136 (0x88)

The system tried to delete the JOIN of a drive that is not joined.

ERROR_NOT_SUBSTED
137 (0x89)

The system tried to delete the substitution of a drive that is not substituted.

ERROR_JOIN_TO_JOIN
138 (0x8A)

The system tried to join a drive to a directory on a joined drive.

ERROR_SUBST_TO_SUBST
139 (0x8B)

The system tried to substitute a drive to a directory on a substituted drive.

ERROR_JOIN_TO_SUBST
140 (0x8C)

The system tried to join a drive to a directory on a substituted drive.

ERROR_SUBST_TO_JOIN
141 (0x8D)

The system tried to SUBST a drive to a directory on a joined drive.

ERROR_BUSY_DRIVE
142 (0x8E)

The system cannot perform a JOIN or SUBST at this time.

ERROR_SAME_DRIVE
143 (0x8F)

The system cannot join or substitute a drive to or for a directory on the same drive.

ERROR_DIR_NOT_ROOT
144 (0x90)

The directory is not a subdirectory of the root directory.

ERROR_DIR_NOT_EMPTY
145 (0x91)

The directory is not empty.

ERROR_IS_SUBST_PATH
146 (0x92)

The path specified is being used in a substitute.

ERROR_IS_JOIN_PATH
147 (0x93)

Not enough resources are available to process this command.

ERROR_PATH_BUSY
148 (0x94)

The path specified cannot be used at this time.

ERROR_IS_SUBST_TARGET
149 (0x95)

An attempt was made to join or substitute a drive for which a directory on the drive is the target of a previous substitute.

ERROR_SYSTEM_TRACE
150 (0x96)

System trace information was not specified in your CONFIG.SYS file, or tracing is disallowed.

ERROR_INVALID_EVENT_COUNT
151 (0x97)

The number of specified semaphore events for DosMuxSemWait is not correct.

ERROR_TOO_MANY_MUXWAITERS
152 (0x98)

DosMuxSemWait did not execute; too many semaphores are already set.

ERROR_INVALID_LIST_FORMAT
153 (0x99)

The DosMuxSemWait list is not correct.

ERROR_LABEL_TOO_LONG
154 (0x9A)

The volume label you entered exceeds the label character limit of the target file system.

ERROR_TOO_MANY_TCBS
155 (0x9B)

Cannot create another thread.

ERROR_SIGNAL_REFUSED
156 (0x9C)

The recipient process has refused the signal.

ERROR_DISCARDED
157 (0x9D)

The segment is already discarded and cannot be locked.

ERROR_NOT_LOCKED
158 (0x9E)

The segment is already unlocked.

ERROR_BAD_THREADID_ADDR
159 (0x9F)

The address for the thread ID is not correct.

ERROR_BAD_ARGUMENTS
160 (0xA0)

One or more arguments are not correct.

ERROR_BAD_PATHNAME
161 (0xA1)

The specified path is invalid.

ERROR_SIGNAL_PENDING
162 (0xA2)

A signal is already pending.

ERROR_MAX_THRDS_REACHED
164 (0xA4)

No more threads can be created in the system.

ERROR_LOCK_FAILED
167 (0xA7)

Unable to lock a region of a file.

ERROR_BUSY
170 (0xAA)

The requested resource is in use.

ERROR_DEVICE_SUPPORT_IN_PROGRESS
171 (0xAB)

Device's command support detection is in progress.

ERROR_CANCEL_VIOLATION
173 (0xAD)

A lock request was not outstanding for the supplied cancel region.

ERROR_ATOMIC_LOCKS_NOT_SUPPORTED
174 (0xAE)

The file system does not support atomic changes to the lock type.

ERROR_INVALID_SEGMENT_NUMBER
180 (0xB4)

The system detected a segment number that was not correct.

ERROR_INVALID_ORDINAL
182 (0xB6)

The operating system cannot run %1.

ERROR_ALREADY_EXISTS
183 (0xB7)

Cannot create a file when that file already exists.

ERROR_INVALID_FLAG_NUMBER
186 (0xBA)

The flag passed is not correct.

ERROR_SEM_NOT_FOUND
187 (0xBB)

The specified system semaphore name was not found.

ERROR_INVALID_STARTING_CODESEG
188 (0xBC)

The operating system cannot run %1.

ERROR_INVALID_STACKSEG
189 (0xBD)

The operating system cannot run %1.

ERROR_INVALID_MODULETYPE
190 (0xBE)

The operating system cannot run %1.

ERROR_INVALID_EXE_SIGNATURE
191 (0xBF)

Cannot run %1 in Win32 mode.

ERROR_EXE_MARKED_INVALID
192 (0xC0)

The operating system cannot run %1.

ERROR_BAD_EXE_FORMAT
193 (0xC1)

%1 is not a valid Win32 application.

ERROR_ITERATED_DATA_EXCEEDS_64k
194 (0xC2)

The operating system cannot run %1.

ERROR_INVALID_MINALLOCSIZE
195 (0xC3)

The operating system cannot run %1.

ERROR_DYNLINK_FROM_INVALID_RING
196 (0xC4)

The operating system cannot run this application program.

ERROR_IOPL_NOT_ENABLED
197 (0xC5)

The operating system is not presently configured to run this application.

ERROR_INVALID_SEGDPL
198 (0xC6)

The operating system cannot run %1.

ERROR_AUTODATASEG_EXCEEDS_64k
199 (0xC7)

The operating system cannot run this application program.

ERROR_RING2SEG_MUST_BE_MOVABLE
200 (0xC8)

The code segment cannot be greater than or equal to 64K.

ERROR_RELOC_CHAIN_XEEDS_SEGLIM
201 (0xC9)

The operating system cannot run %1.

ERROR_INFLOOP_IN_RELOC_CHAIN
202 (0xCA)

The operating system cannot run %1.

ERROR_ENVVAR_NOT_FOUND
203 (0xCB)

The system could not find the environment option that was entered.

ERROR_NO_SIGNAL_SENT
205 (0xCD)

No process in the command subtree has a signal handler.

ERROR_FILENAME_EXCED_RANGE
206 (0xCE)

The filename or extension is too long.

ERROR_RING2_STACK_IN_USE
207 (0xCF)

The ring 2 stack is in use.

ERROR_META_EXPANSION_TOO_LONG
208 (0xD0)

The global filename characters, * or ?, are entered incorrectly or too many global filename characters are specified.

ERROR_INVALID_SIGNAL_NUMBER
209 (0xD1)

The signal being posted is not correct.

ERROR_THREAD_1_INACTIVE
210 (0xD2)

The signal handler cannot be set.

ERROR_LOCKED
212 (0xD4)

The segment is locked and cannot be reallocated.

ERROR_TOO_MANY_MODULES
214 (0xD6)

Too many dynamic-link modules are attached to this program or dynamic-link module.

ERROR_NESTING_NOT_ALLOWED
215 (0xD7)

Cannot nest calls to LoadModule.

ERROR_EXE_MACHINE_TYPE_MISMATCH
216 (0xD8)

This version of %1 is not compatible with the version of Windows you're running. Check your computer's system information and then contact the software publisher.

ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY
217 (0xD9)

The image file %1 is signed, unable to modify.

ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY
218 (0xDA)

The image file %1 is strong signed, unable to modify.

ERROR_FILE_CHECKED_OUT
220 (0xDC)

This file is checked out or locked for editing by another user.

ERROR_CHECKOUT_REQUIRED
221 (0xDD)

The file must be checked out before saving changes.

ERROR_BAD_FILE_TYPE
222 (0xDE)

The file type being saved or retrieved has been blocked.

ERROR_FILE_TOO_LARGE
223 (0xDF)

The file size exceeds the limit allowed and cannot be saved.

ERROR_FORMS_AUTH_REQUIRED
224 (0xE0)

Access Denied. Before opening files in this location, you must first add the web site to your trusted sites list, browse to the web site, and select the option to login automatically.

ERROR_VIRUS_INFECTED
225 (0xE1)

Operation did not complete successfully because the file contains a virus or potentially unwanted software.

ERROR_VIRUS_DELETED
226 (0xE2)

This file contains a virus or potentially unwanted software and cannot be opened. Due to the nature of this virus or potentially unwanted software, the file has been removed from this location.

ERROR_PIPE_LOCAL
229 (0xE5)

The pipe is local.

ERROR_BAD_PIPE
230 (0xE6)

The pipe state is invalid.

ERROR_PIPE_BUSY
231 (0xE7)

All pipe instances are busy.

ERROR_NO_DATA
232 (0xE8)

The pipe is being closed.

ERROR_PIPE_NOT_CONNECTED
233 (0xE9)

No process is on the other end of the pipe.

ERROR_MORE_DATA
234 (0xEA)

More data is available.

ERROR_VC_DISCONNECTED
240 (0xF0)

The session was canceled.

ERROR_INVALID_EA_NAME
254 (0xFE)

The specified extended attribute name was invalid.

ERROR_EA_LIST_INCONSISTENT
255 (0xFF)

The extended attributes are inconsistent.

WAIT_TIMEOUT
258 (0x102)

The wait operation timed out.

ERROR_NO_MORE_ITEMS
259 (0x103)

No more data is available.

ERROR_CANNOT_COPY
266 (0x10A)

The copy functions cannot be used.

ERROR_DIRECTORY
267 (0x10B)

The directory name is invalid.

ERROR_EAS_DIDNT_FIT
275 (0x113)

The extended attributes did not fit in the buffer.

ERROR_EA_FILE_CORRUPT
276 (0x114)

The extended attribute file on the mounted file system is corrupt.

ERROR_EA_TABLE_FULL
277 (0x115)

The extended attribute table file is full.

ERROR_INVALID_EA_HANDLE
278 (0x116)

The specified extended attribute handle is invalid.

ERROR_EAS_NOT_SUPPORTED
282 (0x11A)

The mounted file system does not support extended attributes.

ERROR_NOT_OWNER
288 (0x120)

Attempt to release mutex not owned by caller.

ERROR_TOO_MANY_POSTS
298 (0x12A)

Too many posts were made to a semaphore.

ERROR_PARTIAL_COPY
299 (0x12B)

Only part of a ReadProcessMemory or WriteProcessMemory request was completed.

ERROR_OPLOCK_NOT_GRANTED
300 (0x12C)

The oplock request is denied.

ERROR_INVALID_OPLOCK_PROTOCOL
301 (0x12D)

An invalid oplock acknowledgment was received by the system.

ERROR_DISK_TOO_FRAGMENTED
302 (0x12E)

The volume is too fragmented to complete this operation.

ERROR_DELETE_PENDING
303 (0x12F)

The file cannot be opened because it is in the process of being deleted.

ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING
304 (0x130)

Short name settings may not be changed on this volume due to the global registry setting.

ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME
305 (0x131)

Short names are not enabled on this volume.

ERROR_SECURITY_STREAM_IS_INCONSISTENT
306 (0x132)

The security stream for the given volume is in an inconsistent state. Please run CHKDSK on the volume.

ERROR_INVALID_LOCK_RANGE
307 (0x133)

A requested file lock operation cannot be processed due to an invalid byte range.

ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT
308 (0x134)

The subsystem needed to support the image type is not present.

ERROR_NOTIFICATION_GUID_ALREADY_DEFINED
309 (0x135)

The specified file already has a notification GUID associated with it.

ERROR_INVALID_EXCEPTION_HANDLER
310 (0x136)

An invalid exception handler routine has been detected.

ERROR_DUPLICATE_PRIVILEGES
311 (0x137)

Duplicate privileges were specified for the token.

ERROR_NO_RANGES_PROCESSED
312 (0x138)

No ranges for the specified operation were able to be processed.

ERROR_NOT_ALLOWED_ON_SYSTEM_FILE
313 (0x139)

Operation is not allowed on a file system internal file.

ERROR_DISK_RESOURCES_EXHAUSTED
314 (0x13A)

The physical resources of this disk have been exhausted.

ERROR_INVALID_TOKEN
315 (0x13B)

The token representing the data is invalid.

ERROR_DEVICE_FEATURE_NOT_SUPPORTED
316 (0x13C)

The device does not support the command feature.

ERROR_MR_MID_NOT_FOUND
317 (0x13D)

The system cannot find message text for message number 0x%1 in the message file for %2.

ERROR_SCOPE_NOT_FOUND
318 (0x13E)

The scope specified was not found.

ERROR_UNDEFINED_SCOPE
319 (0x13F)

The Central Access Policy specified is not defined on the target machine.

ERROR_INVALID_CAP
320 (0x140)

The Central Access Policy obtained from Active Directory is invalid.

ERROR_DEVICE_UNREACHABLE
321 (0x141)

The device is unreachable.

ERROR_DEVICE_NO_RESOURCES
322 (0x142)

The target device has insufficient resources to complete the operation.

ERROR_DATA_CHECKSUM_ERROR
323 (0x143)

A data integrity checksum error occurred. Data in the file stream is corrupt.

ERROR_INTERMIXED_KERNEL_EA_OPERATION
324 (0x144)

An attempt was made to modify both a KERNEL and normal Extended Attribute (EA) in the same operation.

ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED
326 (0x146)

Device does not support file-level TRIM.

ERROR_OFFSET_ALIGNMENT_VIOLATION
327 (0x147)

The command specified a data offset that does not align to the device's granularity/alignment.

ERROR_INVALID_FIELD_IN_PARAMETER_LIST
328 (0x148)

The command specified an invalid field in its parameter list.

ERROR_OPERATION_IN_PROGRESS
329 (0x149)

An operation is currently in progress with the device.

ERROR_BAD_DEVICE_PATH
330 (0x14A)

An attempt was made to send down the command via an invalid path to the target device.

ERROR_TOO_MANY_DESCRIPTORS
331 (0x14B)

The command specified a number of descriptors that exceeded the maximum supported by the device.

ERROR_SCRUB_DATA_DISABLED
332 (0x14C)

Scrub is disabled on the specified file.

ERROR_NOT_REDUNDANT_STORAGE
333 (0x14D)

The storage device does not provide redundancy.

ERROR_RESIDENT_FILE_NOT_SUPPORTED
334 (0x14E)

An operation is not supported on a resident file.

ERROR_COMPRESSED_FILE_NOT_SUPPORTED
335 (0x14F)

An operation is not supported on a compressed file.

ERROR_DIRECTORY_NOT_SUPPORTED
336 (0x150)

An operation is not supported on a directory.

ERROR_NOT_READ_FROM_COPY
337 (0x151)

The specified copy of the requested data could not be read.

ERROR_FAIL_NOACTION_REBOOT
350 (0x15E)

No action was taken as a system reboot is required.

ERROR_FAIL_SHUTDOWN
351 (0x15F)

The shutdown operation failed.

ERROR_FAIL_RESTART
352 (0x160)

The restart operation failed.

ERROR_MAX_SESSIONS_REACHED
353 (0x161)

The maximum number of sessions has been reached.

ERROR_THREAD_MODE_ALREADY_BACKGROUND
400 (0x190)

The thread is already in background processing mode.

ERROR_THREAD_MODE_NOT_BACKGROUND
401 (0x191)

The thread is not in background processing mode.

ERROR_PROCESS_MODE_ALREADY_BACKGROUND
402 (0x192)

The process is already in background processing mode.

ERROR_PROCESS_MODE_NOT_BACKGROUND
403 (0x193)

The process is not in background processing mode.

ERROR_INVALID_ADDRESS
487 (0x1E7)

Attempt to access invalid address.

Suggestions?

If you have additional suggestions regarding the System Error Codes documentation, given the constraints enumerated at the top of the page, please click the link labeled "Send comments about this topic to Microsoft" below. We appreciate the input.

Requirements

Minimum supported client

Windows XP [desktop apps only]

Minimum supported server

Windows Server 2003 [desktop apps only]

Header

WinError.h (include Windows.h)

你可能感兴趣的:(dos,批处理,ERRORLEVEL)