我在使用blat发送电子邮件的bat文件中有以下无限循环。
:sendmail
sleep 5
blat my.log -subject "Test Mail" -server company.server.com -tf names.lst
if errorlevel 1 goto sendmail
我有它循环,因为有时邮件服务器很忙,并且在第二次收到请求时不会发送我的电子邮件,但它会在几秒钟之后发送。因此,如果服务器繁忙,这件事只会每5秒循环一次。但是如果服务器整天停机,我想在30分钟后打破无限循环。有谁知道怎么做?
答案 0 :(得分:2)
创建一个变量来跟踪您等待的秒数。每次循环,检查您是否等待1,800秒(30分钟)或更长时间。如果你有,那就打破循环。
以下代码未经测试。
SET SecondsWaited=0
:sendmail
IF %SecondsWaited% GEQ 1800 GOTO EMAILFAIL
SET /A SecondsWaited+=5
sleep 5
blat my.log -subject "Test Mail" -server company.server.com -tf names.lst
if errorlevel 1 goto sendmail
:EMAILFAIL