2014-09-30 142 views
0

我有一个名为“bootstrap.bat”和一个批处理文件,它像这个 -在启动时运行批处理文件VB脚本

@echo OFF 
@echo There is an error. 

wscript errorMail.vbs 

@echo Error Message sent 

正如你可以看到它调用一个VB脚本这是刚刚发送一封电邮。 VB脚本是 -

Set objEmail = CreateObject("CDO.Message") 
objEmail.From = "[email protected]" 
objEmail.To = "[email protected]" 
objEmail.Subject = "Error: Generation of Final report failed" 
objEmail.Textbody = "There was an error in generating the Final report for the Test." 
objEmail.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
objEmail.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _ 
    "mailhost.som.net" 
objEmail.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
objEmail.Configuration.Fields.Update 
objEmail.Send 

当我从CMD手动运行“bootstrap.bat”,则得到正确执行VB脚本和邮件发送得到。但我有一个设置,它将在启动时运行'bootstrap.bat',但当时它不执行VB脚本。我不确定是否需要更改其他任何东西来执行VB脚本。

+2

当批处理文件从启动时运行时,可能(未测试),默认文件夹不是存储批处理文件的文件夹,因此找不到vbscript文件。尝试使用'wscript'%〜dp0errorMail.vbs'(或者脚本的完整路径,如果它位于其他文件夹中) – 2014-09-30 11:03:51

+0

您也应该使用cscript而不是wscript。不同之处在于wscript会在调用“echo”的地方打开一个消息框,其中cscript写入控制台。 – user743414 2014-09-30 11:09:37

+0

MC ND,谢谢你,工作。你能否把你的答案放在这里,以便我能接受它。 – 2014-09-30 13:22:37

回答

0

您可以尝试使用一个文件),而不是两个(保存为.bat.cmd):

echo off 
:sub echo(off):exit sub 
set off=""'&set off=&cscript /nologo /e:vbscript "%~f0" %*&exit /b %errorlevel% 
:end sub 

Set objEmail = CreateObject("CDO.Message") 
objEmail.From = "[email protected]" 
objEmail.To = "[email protected]" 
objEmail.Subject = "Error: Generation of Final report failed" 
objEmail.Textbody = "There was an error in generating the Final report for the Test." 
objEmail.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
objEmail.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _ 
    "mailhost.som.net" 
objEmail.Configuration.Fields.Item _ 
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
objEmail.Configuration.Fields.Update 
objEmail.Send 

WScript.Echo "Error Message sent" 

还有一个similar approach