windows下”ftp+bat脚本+定时任务“实现应用程序(文件)从服务器自动检测与更新

一.需求:
多个厂区部署了软件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.最后等待系统自动执行脚本,看看功能是否能正常实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值