批处理脚本手动双击可以执行,但计划任务中执行失败

问题现象:

使用批处理脚本从linux端(samba server) 备份一些数据,设置计划任务每天凌晨两点定时备份。

1)、windows系统中映射共享文件夹为S:盘,需要输入共享用户名和密码

2)、脚本中使用xcopy命令复制共享目录中的文件到windows本地目录中。

脚本如下:

set Name=%date:~0,4%%date:~5,2%%date:~8,2%
chcp 65001 
REM chcp防止中文乱码
mkdir "E:\脚本备份\bakscripts%Name%"
xcopy /E "S\*"  "E:\脚本备份\bakscripts%Name%\"

手工双击执行上述批处理文件没有问题,可以正常备份。

但是在计划任务中不行,脚本运行也设置了最高权限。把共享路径替换为本地路径就可以了,说明问题出现在共享路径中。

原因分析

在计划任务中执行该批处理文件并没有错误日志呈现,需要先改造脚本,后面把xcopy命令替换为功能强大的robocopy命令,可以方便的加上日志文件

set Name=%date:~0,4%%date:~5,2%%date:~8,2%
chcp 65001
mkdir "E:\脚本备份\bakscripts%Name%"
robocopy "\\192.168.30.11\share"  "E:\脚本备份\bakscripts%Name%" /LOG+:"E:\脚本备份\bakscripts.log" /E /V /ETA /MIR /MT:8

改为上面的脚本之后,日志中看有如下错误:

ERROR 1326 (0x0000052E) Accessing Source Directory \\192.168.30.11\share\
The user name or password is incorrect.

原来是没有权限造成的,并且也说明了计划任务中执行脚本时使用的环境(密码缓存等)和当前登录用户(手工执行批处理的用户)并不一致。后面需要解决掉共享文件的用户和密码就可以了。

 

解决方案:

windows 中使用net use方法来创建个共享管道

最终可以在计划任务中成功执行的脚本如下:

set Name=%date:~0,4%%date:~5,2%%date:~8,2%
chcp 65001
mkdir "E:\脚本备份\bakscripts%Name%"
net use \\192.168.30.11\share "共享密码" /user:"共享用户名"
robocopy "\\192.168.30.11\share"  "E:\脚本备份\bakscripts%Name%" /LOG+:"E:\脚本备份\bakscripts.log" /E /V /ETA /MIR /MT:8

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值