赞
踩
一.需求:
多个厂区部署了软件A,现在希望软件能自动检测更新,但为了快速上线,决定不改动软件,而是通过第三方工具来实现;
二.思路:
将更新程序和更新目标标识文件放在服务器上;
各厂区电脑定时检查服务器上是否有与自身一致的标识文件,若有,则尝试下载更新程序至本地,然后执行备份、重命名等操作,成功执行后,删除服务器上对应的目标标识文件;
三.实现:
1.服务器端:
在服务器上建立ftp站点,将用来放置更新程序和目标标识文件的文件夹权限设为可读写!
2.厂区电脑端:
2.1:编写更新脚本update.bat
@echo off SET currentTime=%date% %time% SET idName=167010.cit SET updateFile=run_new.exe SET currentFile=run.exe SET backupFile=run_bak.exe ftp -s:check.txt if exist %idName% ( echo %currentTime%:find idName!>> log.log ftp -s:get.txt if exist %updateFile% ( echo %currentTime%:has download new file!>> log.log echo %currentTime%:update application started... >> log.log move %currentFile% %backupFile% move %updateFile% %currentFile% echo %currentTime%:update complete!>> log.log ftp -s:del.txt del %idName% echo %currentTime%:delete remote idName and local idName!>> log.log echo %currentTime%:update application finished... >> log.log ) else ( del %idName% echo %currentTime%:cannot find new file!>> log.log ) )
其中:
updateFile:服务器上发布的最新程序文件名(run_new.exe);
currentFile:本地电脑当前文件名(run.exe);
backupFile:本地电脑当前备份文件名(run_bak.exe);
idName:各厂区目标标识文件名(167010.cit),可以是空文件,也可以通过里面的内容进行校验等操作;
<服务器地址:192.168.0.15;服务器ftp账户:Administrator,password:0628;更新程序的目录:C:\Users\NJKQ\Desktop\auto;目标文件标识名:167010.cit>
check.txt:尝试获取服务器上的与自己匹配的目标标识文件名。
open 192.168.0.15
Administrator
0628
prompt off
lcd C:\Users\NJKQ\Desktop\auto
get 167010.cit
close
prompt on
bye
quit
get.txt:尝试获取服务器上的更新程序。
open 192.168.0.15
Administrator
0628
prompt off
lcd C:\Users\NJKQ\Desktop\auto
get 167010.cit
get run_new.exe
close
prompt on
bye
quit
del.txt:尝试删除服务器上对应的目标文件标识。
open 192.168.0.15
Administrator
0628
prompt off
delete 167010.cit
close
prompt on
bye
quit
log.log:更新日志。
2019-04-19 16:39:00.04:find idName!
2019-04-19 16:39:00.04:has download new file!
2019-04-19 16:39:00.04:update application started...
2019-04-19 16:39:00.04:update complete!
2019-04-19 16:39:00.04:delete remote idName and local idName!
2019-04-19 16:39:00.04:update application finished...
脚本执行流程分析:
通过ftp+check.txt命令尝试获取服务器上对应的目标标识文件,然后判断当前目录是否存在该文件,若不存在——则退出,若存在——说明服务器上有对本厂区的更新,继续尝试获取服务器上的更新程序,然后判断当前目录是否存在更新文件,若不存在——则删除刚刚获取到的目标标识文件并退出,若存在——则先备份当前文件,再将更新文件重命名为当前文件名,最后尝试删除服务器上对应的目标标识文件,避免重复更新;
2.2:创建计划任务
a.在“开始”菜单中找到“任务计划程序”并打开,在“操作”中“创建基本任务”,填写相关信息。
b.在windows任务计划程序中增加基本任务时,一定要填写“起始于(可选)”内容,否则脚本执行时会出现找不到相关文件的现象!附:【Window】定时任务执行提示找不到文件的原因
c.在触发器中设置执行间隔时,需要设置“高级设置”里的“重复任务间隔”选项以实现任意时间间隔周期执行我们的脚本;
测试:
1.先通过直接双击运行脚本,看看功能是否能正常实现。
2.再通过手动点击任务计划程序中的“运行”按钮,看看功能是否能正常实现。
3.最后等待系统自动执行脚本,看看功能是否能正常实现。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。