我有一个包含10个reg命令的bat文件。如果发生了至少1个错误并暂停,我需要在工作结束时显示一条消息。
我已阅读本手册 http://ss64.com/nt/if.html http://ss64.com/nt/errorlevel.html 他们完全不清楚。正如我所见,ERRORLEVEL有2个变量 - 系统和本地。但在许多stackoverflow答案中,使用了两个变量: How do I make a batch file terminate upon encountering an error? check if command was successfull in a batch file 因此,如果某个应用程序与bat文件同时返回一些代码,我可能会得到错误的行为。所以我需要当地的ERRORLEVEL。我该怎么办?
答案 0 :(得分:2)
@dbenham注意事项:
用户可以设置一个覆盖预期动态%ERRORLEVEL%值的ERRORLEVEL环境变量。有关详细信息,请参阅this。
因此,除非您执行奇怪的操作,例如手动分配给errorlevel
,否则只有一个errorlevel
变量,并且它是由批处理文件中最后执行的命令在当前为当前执行的批处理文件设置的。它只被称为系统变量,因为它是由系统设置的,而不是由用户设置的。
setlocal enableDelayedExpansion
reg do something1 || set error=, 1
reg do something2 || set error=!error!, 2
reg do something3 || set error=!error!, 3
if not "!error!"="" echo Failed tasks: !error:~2!