问题:编写的bat脚本,直接执行,成功;但是在任务管理器中配置该任务,运行不成功,结果显示为:0x1,系统环境为 Windows Server 2008。
分析:bat任务没有调用执行。
解决方案:
尝试换用户创建任务也不行,最后网上的一篇文章提供了线索。
在任务启动的“操作”窗口,除了原本的启动程序路径,添加属性“起始于”(将bat文件的上层目录填入)
附:http://www.cnblogs.com/mannyzhoug/archive/2013/05/28/3104030.html
Windows Server 2008 R2 可能会碰到任务计划无法自动运行的解决办法
最近遇见一个奇怪的现象,在做某系统的定期备份的时候使用到了非系统自带Rsync命令,但是手动启动没问题,而且又非常期望批量化在多台主机上进行,怎么办呢?Windows Server 2003下面这样执行任务计划没问题,而就Windows Server 2008 R2下面出现意外。
正常情况下我们的任务计划会有反馈数值,通过它可以判断这个任务计划上次是否运行正常(详细连接:http://support.microsoft.com/kb/267031/)。
- 代码 0 或 0x0:操作成功完成。
- 代码 1 或 0x1:调用的函数不正确或调用了未知函数。
- 代码 10 或 0xa:环境不正确。
- 代码 0x8009000f:常规访问被拒绝
Figure 1看到上次运行结果出现非0情况
这种非〇情况表示的是不能被接受的。
通过对这个批处理设置断点,我看到了这样的报错信息。
Figure 2在批处理中加入Pause 进行断点,查看错误信息
很明显,这个rsync不是系统自带的程序和文件,因此无法被系统直接调用,猜测和环境变量有关,仔细寻找Windows Server 2008 R2 下面的任务计划选项,我看到了这个填空的地方。
Figure 3起始于(可选)项
我将这个填写成了该条脚本的所在的目录,再次运行该任务计划,得到返回成功的标记,并且在服务本分服务器端受到相应的备份内容。
这里回顾一下,两个版本操作系统的任务计划的不一样,Windows Server 2003 下面可以选择的内容,项目并不多,不过他默认的情况下会将起始于填写进去,使用的就是所在脚本的上一级目录。
Figure 4 Windows Server 2003 下面的起始于,默认被填写
因此设置Windows Server 2008 ,2012这样的基于Nt6核心的系统的任务计划的时候建议将起始于进行一下设置。
-=EOB=-