之前为了用winscp备份vps上的数据库,我写了一个批处理文件,然后把它放到计划任务里,一开始不运行,因为没有设置“开始于”,改完发现还是不行,因为触发事件设置成了开机,而开机时可能啥都没准备好,根本开不了。
后来把触发事件改成登录后,bat运行起来了,以为这样万事大吉了,实际上还是没用,因为刚开机的时候,网还没连接上,所以无法进行备份。
按道理说,这个问题应该用循环/递归的办法来解决,也就是说,只要发现错误,程序就重新执行一次自己。但是考虑到刚登录基本上有百分之99.99的概率无法连接网络,所以还是先加上一个延时吧。
网上一查,批处理本身好像并没有延时的办法,怎么办呢?写一个vbs到批处理里,形如以下代码:
echo set os = CreateObject("Wscript.shell")>>sleep.vbs echo wscript.sleep 10000>>sleep.vbs &&call sleep.vbs &&del sleep.vbs 等10秒总可以了吧!
以上代码利用管道命令把vbs程序语句(就一句睡10秒)写到一个vbs文件中,执行完了再删除之,你懂的。
接下来就可以继续向下执行备份程序了。