【问题标题】:batch file is not called from within VBS file when run using Task Scheduler in windows 2008R2在 Windows 2008R2 中使用任务计划程序运行时,不会从 VBS 文件中调用批处理文件
【发布时间】:2013-02-25 23:39:56
【问题描述】:

我创建了一个调用批处理文件的 vbs 文件,该文件在手动运行时可以完美运行。 但是,当我从计划任务运行相同的 vbs 脚本时,vbs 完成时没有错误,但似乎没有调用批处理文件,因为它负责的任务都没有完成。

我已确保计划任务在我的管理员帐户下运行。我在旧服务器上运行相同任务的经验非常丰富,但我最近从 2003 年迁移到了新的 2008 R2。

这是不执行的行:

wshell.run "%comspec% /c ""C:\My Scripts\ForAdministration\AddSitesScripts\AddSite.bat"" " & DomainName & " " & WebsiteID & " " & DomainName20 & " " & Path & " " & HasStats & " " & NewAppPool & " " & 1 & " " & 1 & " " & 1, 0, True

我将所有变量记录到一个文本文件中,它们都很好。正如我所说,手动触发时运行良好。

感谢您的帮助!

【问题讨论】:

    标签: vbscript batch-file scheduled-tasks


    【解决方案1】:

    您的 2008 R2 机器是 64 位系统,%comspec% 指定 CMD.exe 的 64 位版本。 您很可能想要使用 32 位版本的 CMD.exe(是的,有两个!)。 将 %comspec% 更改为

    %SystemRoot%\sysWOW64\cmd.exe
    

    是的……没错! sysWOW64中的CMD.exe是32位版本!

    【讨论】:

    • 谢谢。我的环境变量为 Comspec 显示以下内容,C:\Windows\system32\cmd.exe。如果版本不正确,我手动运行不会得到相同的结果吗?感谢您的洞察力。
    【解决方案2】:

    可能在计划任务中作为不同用户运行。

    验证用户是否拥有必要的权限。

    验证问题不是由假定的当前目录引起的。

    将以下语句作为 bat 文件的第一行并尝试两种方式(手动和计划)运行:

    echo.CD=%cd% & pause
    

    请注意,当您“以管理员身份运行”时,当前目录会发生变化。您可以通过在程序顶部添加以下行来解决此问题(在引用任何文件/文件夹之前设置所需的 CD)。

    pushd %~dp0
    

    【讨论】:

    • 感谢您的反馈,但由于我指定了文件的直接路径,这还不够吗?
    猜你喜欢
    • 2015-09-05
    • 2014-03-15
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2013-10-19
    • 1970-01-01
    相关资源
    最近更新 更多