在我的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
或xcopy
或任何其他命令替换mkdir
命令,它也不会运行。
即使我更改批处理文件中的命令顺序,命令也不会运行。但是当通过双击执行批处理文件时,一切都运行良好。
Y:\
是同一登录下的映射驱动器。在输入我的问题之后,我回去再跑一次测试。有趣的是,如果我用本地驱动器替换映射驱动器,一切似乎都工作正常。所以,此时看起来映射驱动器就是问题所在。有关解决这个问题的任何想法吗?
基本上,如何使用从任务计划程序执行的批处理文件将文件复制或移动到映射的驱动器(不同的计算机)?
答案 0 :(得分:0)
S:
和Y:
可能是映射的网络驱动器,但它们是在用户会话的上下文中映射的。计划任务将在其自己的会话中运行,并且不会映射这些驱动器。
您应该使用共享的UNC路径(\\server\share
),因为它应该在任一上下文中工作(只要共享对于运行计划任务的用户是可访问的)。