Batch file 在批处理文件中使用errorlevel以了解程序是否正常退出

Batch file 在批处理文件中使用errorlevel以了解程序是否正常退出,batch-file,Batch File,我们有一个偶尔会崩溃的程序。客户从计划任务运行程序。当程序使用某个参数运行时,该程序作为接口引擎运行,创建一个文件,然后将该文件ftp到另一台服务器,以便由另一个程序导入 我想知道是否可以让计划任务运行批处理文件。批处理文件将运行程序,并在程序退出时检查errorlevel。如果errorlevel不等于零,则批处理文件将再次运行该程序。有人认为我在批处理文件中使用errorlevel的计划有问题吗 以下是批处理文件的示例: :start myPgm.exe intfc if e

我们有一个偶尔会崩溃的程序。客户从计划任务运行程序。当程序使用某个参数运行时,该程序作为接口引擎运行,创建一个文件,然后将该文件ftp到另一台服务器,以便由另一个程序导入

我想知道是否可以让计划任务运行批处理文件。批处理文件将运行程序,并在程序退出时检查
errorlevel
。如果
errorlevel
不等于零,则批处理文件将再次运行该程序。有人认为我在批处理文件中使用
errorlevel
的计划有问题吗

以下是批处理文件的示例:

:start    
myPgm.exe intfc    
if errorlevel <> 0 then start
:开始
myPgm.exe intfc
如果错误级别为0,则开始

您的IF语句是错误的。应该是

if %errorlevel% neq 0 goto start
或者你的脚本可以读

:start
myPgm.exe intfc || goto start

我想这样写:

:start
myPgm.exe intfc
IF %errorlevel% NEQ 0 GOTO :error
GOTO :end
:error
echo There was an error.
EXIT 1
:end
echo End.
EXIT 0

谢谢你的反馈。我计划让我的pgm在启动时将errorlevel设置为非零,然后在正常退出时将其设置回零。你知道服务器上运行的另一个程序是否也会设置errorlevel吗?@Patrick Anderson引用的文章消失了(错误404)。你知道这篇文章的另一个链接吗?有关ERRORLEVEL和%ERRORLEVEL%之间的区别,请参阅。我重新发布了更正后的链接,因为我不允许编辑我的评论(为什么?)。你的注释没有问题,但你的代码会给出语法错误。不,你误解了。如果%errorlevel%neq 0…或如果errorlevel 1…,则需要
。最后一个表单假定errorlevel从不为负。您的代码既不是,也不是,因此会引发语法错误。