批处理手动运行良好。但是当任务调度程序的 运行 给出错误时

Batch manually runs well. But When ran from Task scheduler gives error

在 Windows Server 2008 上,我将任务安排到 运行 一个批处理文件,该批处理文件将触发一个控制台应用程序。当双击应用程序时,它 运行ning 完美。但是当 运行 来自任务调度程序时,我在日志中收到以下错误。

exception from hresult 0x800a03ec

我登录时使用的 ID 和 运行ning 任务调度程序具有完全管理员权限。

我已经尝试过这些解决方案.. Batch File runs manually but not in task scheduler

Batch file called by scheduled task throws error when scheduled, runs fine when double clicked

Batch runs manually but not in scheduled task

但是问题没有解决。事实上,当 运行 来自任务调度程序时,它会在控制台应用程序中触发成功邮件和异常邮件。但是手动 运行 时就不是这样了。需要帮助!!

注意:我通过控制台应用程序处理的所有输出报告都将采用 .xlsx 格式。

批处理文件如下

@ECHO. 
@ECHO /***************************************************************/ 
@ECHO               Report Application 
@ECHO /**************************************************************/
@For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @( 
            Set Month=%%A
            Set Day=%%B
                Set Year=%%C
)

 SET DRV=E:\ReportApplication
cd %DRV%\bin\Release\

ReportSolution.exe >> %DRV%\Log\ReportSolutionlog%Month%%DAY%%Year%.txt
cd\
cd %DRV%


@ECHO  Application is completed successfully
@ECHO /**********************************************/

以下 2 行可能是个问题:

SET DRV=E:\ReportApplication
cd %DRV%\bin\Release\

cd不带参数/D不改变当前驱动。因此,在 运行 带有任务调度程序的批处理文件上,当前工作目录像往常一样 C:\Windows\System32,目录更改不起作用,%SystemRoot%\System32(更好)仍然是当前工作目录。

双击批处理文件,Windows 将批处理文件的目录设置为当前工作目录。当它位于驱动器 E:.

上时,双击会生成一个工作批处理文件

解决方案是:

SET "DRV=E:\ReportApplication"
cd /D "%DRV%\bin\Release\"

问题终于解决了。我不认为问题出在批处理文件或应用程序上。

这个解决方案在...

・Windows 2008 服务器 x64

请创建此文件夹。

C:\Windows\SysWOW64\config\systemprofile\Desktop

・Windows 2008 服务器 x86

请创建此文件夹。

C:\Windows\System32\config\systemprofile\Desktop

...而不是 dcomcnfg.exe.

这个操作解决了我系统中的办公自动化问题。

在 systemprofile 文件夹中似乎需要 Desktop 文件夹才能通过 Excel 打开文件。

它从 Windows2008 年消失,Windows2003 年有了文件夹, 我认为它会导致此错误。

我在下面提到的 link 中找到了这个答案。小川的回答。

https://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64?forum=innovateonoffice

但我不知道如何通过创建一个空文件夹解决问题。但它有效..希望这对有类似问题的人有所帮助