我有一个 BAT/CMD 文件,当从命令提示符运行它时,它会完全运行。当我通过任务计划程序运行它时,它只部分运行。
这是文件的副本
cd\sqlbackup
ren Apps_Backup*.* Apps.Bak
ren Apps_Was_Backup*.* Apps_Was.Bak
xcopy /Y c:\sqlbackup\*.bak c:\sqlbackup\11\*.bak
xcopy /y c:\sqlbackup\*.bak \\igweb01\c$\sqlbackup\*.bak
Move /y c:\sqlbackup\*.bak "\\igsrv01\d$\sql backup\"
最后两行在任务调度程序调用时不会运行。但是,从命令行手动运行时,它们又可以工作。
所有本地服务器命令都运行,但是当涉及到最后两行时,它会转到另一台服务器,然后它不起作用。
答案1
看起来您的计划任务用户帐户没有写入的\\igweb01\c$\sqlbackup
权限\\igsrv01\d$\sql backup
。
答案2
目前,我正在使用的帐户是管理员。三台服务器上的用户名和密码相同。我认为使用管理员执行任务可以缓解这个问题。
我刚刚使用第三方调度程序进行了测试,效果很好。不确定任务计划程序有什么问题
答案3
2条备注:
I. 在我手边的 winxp vm 中,xcopy 的语法是 xcopy source dest /switches,而不是您那里的 xcopy /switches source dest。
II. 此虚拟机中的 move.exe 需要驱动器号而不是 unc 路径。尝试将共享映射到驱动器号,并将文件移动到驱动器号而不是 unc 路径;
2条建议:
I. 检查计划任务日志文件(当您转到计划任务时,我认为它在工具菜单中),谁知道,它甚至可能告诉您出了什么问题;
II. 编写脚本时,总是检查操作的返回级别。如果批处理脚本不支持此功能,请使用其他脚本语言(我会使用 Perl 执行此操作,我知道现在大多数编写脚本的 Windows 管理员都使用 Powershell)。
如果没有使用合适的脚本语言,至少要写一个日志文件,记录发生的事情,并将标准输出和错误重定向到它。这样,你就可以随时看到发生了什么事情什么已经发生了。