【问题标题】:Windows 2008 R2 Task Scheduler fails to execute commandsWindows 2008 R2 任务计划程序无法执行命令
【发布时间】:2016-01-30 07:33:51
【问题描述】:

在我的 Windows Server 2008 R2 机器上,批处理文件计划使用任务计划程序运行。由于某种原因,只执行了批处理文件中的一部分命令;有些命令会被忽略。

批处理文件如下所示:

cd s:
cd "S:\Reports\"
sqlcmd -S ipAddress -U login -P password -d dbname -i "S:\query.sql" -o "S:\Folder\Report.txt"
copy /A /Y "S:\Folder\Report.txt" Y:\

当我通过双击运行批处理文件时,一切都按预期运行;但是当它从任务调度程序执行时,只有sqlcmd 部分运行正确。 copy 命令似乎没有运行。即使我将copy 命令替换为xcopymkdir 或任何其他命令,它也不会运行。

即使我更改批处理文件中命令的顺序,命令也不会运行。但是当双击执行批处理文件时,一切运行完美。

Y:\ 是同一登录名下的映射驱动器。在输入我的问题至此之后,我返回并进行了另一项测试。有趣的是,如果我用本地驱动器替换映射驱动器,一切似乎都正常。因此,此时看起来映射驱动器是问题所在。有解决这个问题的想法吗?

本质上,如何使用从Task Scheduler执行的批处理文件将文件复制或移动到映射驱动器(不同的机器)?

【问题讨论】:

  • 1.实际上不是MS-DOS :-) 2. 将cd s: 替换为s: 以切换驱动器 3. 根本不需要前两行
  • 感谢您的快速回复。我试试
  • 你能编辑问题和信息吗?也许还有一些你的任务配置的截图。顺便说一句,我认为在 superuser.com 上可能会更好地回答这个问题。问题是,代码本身没有问题。这是一个任务调度程序配置问题。
  • 仅供参考:copy 完全没有理由。您可以在对 sqlcmd 的调用中将 -o "S:\Folder\Report.txt" 更改为 -o "Y:\Report.txt" 并完全省略副本。
  • 这是您如何配置任务的问题。除非我们将任务配置为仅在用户登录时运行,否则它无法访问映射的网络驱动器。请改用 UNC 路径并设置任务运行的用户名和密码。

标签: batch-file cmd scheduled-tasks windows-server-2008-r2


【解决方案1】:

S:Y: 可能是映射的网络驱动器,但它们是在用户会话的上下文中映射的。计划任务将在其自己的会话中运行,并且不会映射这些驱动器。

您应该改用共享的 UNC 路径 (\\server\share),因为这应该适用于任一上下文(只要运行计划任务的用户可以访问共享)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-29
    • 2016-02-21
    • 2011-03-10
    • 1970-01-01
    • 2010-12-27
    • 2013-11-07
    • 2014-09-15
    • 1970-01-01
    相关资源
    最近更新 更多