Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 任务调度器。未执行VBS脚本_Batch File_Vbscript_Outlook_Scheduled Tasks - Fatal编程技术网

Batch file 任务调度器。未执行VBS脚本

Batch file 任务调度器。未执行VBS脚本,batch-file,vbscript,outlook,scheduled-tasks,Batch File,Vbscript,Outlook,Scheduled Tasks,我创建了一个vbs,用于从Outlook未读电子邮件中检索附件并将其存储到文件夹中 GetMail.vbs Dim SavePath Dim Subject Dim FileExtension Dim k SavePath = "D:\IN\" Subject = "'Replication IN'" Set objOutlook = CreateObject("Outlook.Application") Set objNamespace = objOutlook.GetNamespace(

我创建了一个vbs,用于从Outlook未读电子邮件中检索附件并将其存储到文件夹中

GetMail.vbs

Dim SavePath
Dim Subject
Dim FileExtension
Dim k

SavePath = "D:\IN\"
Subject = "'Replication IN'"

Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(6) 'Inbox

Set colItems = objFolder.Items
Set colFilteredItems = colItems.Restrict("[Unread]=true")
Set colFilteredItems = colFilteredItems.Restrict("[Subject] = " & Subject)


For k = colFilteredItems.Count to 1 step -1
  set objMessage  = colFilteredItems.Item(k)
  intCount = objMessage.Attachments.Count
    If intCount > 0 Then
        For i = 1 To intCount
                objMessage.Attachments.Item(i).SaveAsFile SavePath &  _
                    objMessage.Attachments.Item(i).FileName
        Next
        objMessage.Unread = False
    End If
Next
现在,我必须自动化这个任务,一旦完成,执行另一个程序,它将处理收到的附件。为此,我创建了一个批处理文件

MyBatch.bat

cls
@ECHO OFF
ECHO. *  Retrieving emails ... *
"D:\GetMail.vbs"
ECHO. *  Importing data. Please wait ... *
"D:\MyProgram.exe" 
CLS
EXIT
我没有问题,在执行.bat文件时,一切都正常。但是,当此文件由计划任务执行时,脚本无法读取电子邮件,也无法收集附件

我已经检查了以下内容:

  • 该任务正在以管理员身份运行
  • 选中“以最高权限运行”复选框
  • 任务的最后执行状态正确
  • 事件日志查看器中没有相关错误

原因可能是什么?

Outlook与任何其他Office应用程序一样,无法在服务中使用(这就是任务计划程序)

您可以使用扩展MAPI(仅限C++或Delphi)或包装器,如(任何语言,都可以在服务中使用它的对象族)

您可能还想添加对Namespace的调用。登录:

Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
objNamespace.Logon
Set objFolder = objNamespace.GetDefaultFolder(6) 'Inbox

当outlook通过规则向导下载电子邮件时,请尝试将脚本作为对电子邮件执行的操作来执行。谢谢您的回复。我来看看扩展MAPI。