因此,我从经验中知道,从cmd.exe运行有效程序并检查%errorlevel%将返回0:
C:\>dir logo.bmp
Volume in drive C has no label.
Volume Serial Number is 5283-A7A2
Directory of C:\
05/22/2008 12:43 PM 1,440,054 logo.bmp
1 File(s) 1,440,054 bytes
0 Dir(s) 71,723,995,136 bytes free
C:\>echo %errorlevel%
0
同样,尝试执行一个不存在的命令,然后检查%errorcode%会给我9009:
C:\>idontexist.exe
'idontexist.exe' is not recognized as an internal or external command,
operable program or batch file.
C:\>echo %errorlevel%
9009
我已经编写批处理脚本多年了,它们一直都以这种方式工作。但是,有人问到有关此技术的兼容性(向前和向后)的问题,当找不到文件或程序时,我找不到Microsoft的任何正式文档,它们实际上将9009定义为错误级别。我最近到达的是该站点(http://msdn.microsoft.com/en-us/library/ms681381(v=vs.85).aspx),不幸的是,该站点将9009列为DNS错误。
有谁知道Microsoft在哪里记录了此行为?
最佳答案
Exchange团队推出了Common Error Lookup Tool,它将为您翻译错误代码(包括HRESULTs,这非常方便)。 9009的输出是:
# for decimal 9009 / hex 0x2331 :
MSG_DIR_BAD_COMMAND_OR_FILE cmdmsg.h
# '%1' is not recognized as an internal or external command,
# operable program or batch file.
SQL_9009_severity_10 sql_err
# Cannot shrink log file %d (%s) because of minimum log space
# required.
DNS_ERROR_RCODE_NOTAUTH winerror.h
# DNS server not authoritative for zone.
# for hex 0x9009 / decimal 36873 :
SSLEVENT_NO_CIPHERS_SUPPORTED lsapmsgs.mc
# No suitable default server credential exists on this
# system. This will prevent
# server applications that expect to make use of the system
# default credentials
# from accepting SSL connections. An example of such an
# application is the directory
# server. Applications that manage their own credentials,
# such as the internet
# information server, are not affected by this.
# 4 matches found for "9009"
...所以您要寻找的是cmdmsg.h。
本质上,它并不是真正的文档,但至少是官方的。
关于batch-file - cmd.exe的官方MS引用%errorlevel%9009,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23091906/