我正在尝试安排一个批处理文件通过第三方应用程序运行,但是输出文件没有在目录中创建。如果我从命令行运行 .BAT 文件,它会起作用并且文件会被创建。使用 Windows 计划也会成功。
基本上,第三方软件将安排 .BAT 文件,并在第三方用户界面中显示成功。从命令提示符运行和从软件运行之间的区别在于,软件将使用其 Windows 服务来启动批处理。
第三方软件将显示成功,因为它能够成功调用.BAT 文件运行,但它无法控制脚本中调用的其他 EXE。
我能够在第三方软件中运行一个简单的.BAT 文件,例如复制命令。
我遇到问题的 .BAT 调用已编译的 EXE,该 EXE 启动 Excel 在某个位置创建文件。
.bat 文件调用 something.exe,然后后者调用 Excel.exe:
C:\something.exe -o D:\filename.xlsm C:\filename.xlsm refresh_pivot
您认为这是权限问题吗?我使用 Process Monitor 验证了任何“拒绝访问”错误,但根据跟踪,一切似乎都正常。它在非 64 位操作系统上工作正常,我目前使用的是 Win2008 64 位。
答案1
Afrazier 可能走在正确的轨道上。您可以通过使用命令提示符中的 runas 命令来测试这一点,并使用与服务使用的相同帐户测试运行批处理文件。这将是一个比在您的用户帐户或管理员下从命令提示符运行批处理文件更好的测试。
该命令看起来像这样:C:\> runas /user:DOMAIN\service_acct "scheduled.bat"
我还会尝试用实际的 something.exe 命令替换批处理文件,看看是否有任何不同的输出,即 C:\> runas /user:DOMAIN\service_acct "something.exe -o D:\filename.xlsm C:\filename.xlsm refresh_pivot"
这可能会让您更好地了解发生了什么。如果发生访问被拒绝错误,那么这肯定是权限问题。您可以尝试在提示符下输入 runas 来查看其他选项。