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.最后等待系统自动执行脚本,看看功能是否能正常实现。

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的问题,我会尽量为您解答。 首先,您需要确保您的Jenkins服务器上安装了MSBuild插件,您可以从Jenkins插件管理页面中安装该插件。 接下来,您需要在Jenkins中配置MSBuild构建步骤,以便能够自动化构建您的代码。具体步骤如下: 1. 在Jenkins的构建页面中,单击“添加构建步骤”按钮,并选择“MSBuild”选项。 2. 在“MSBuild”构建步骤页面中,输入MSBuild的路径和参数。您可以在此处指定您要构建的项目文件、输出路径等信息。 3. 单击“保存”按钮保存您的配置。 接下来,您需要配置Jenkins与您的SVN/Subversion版本控制系统集成,以便能够自动拉取代码并构建。具体步骤如下: 1. 在Jenkins的构建页面中,单击“源代码管理”选项卡,并选择“Subversion”选项。 2. 在“Subversion”页面中,输入您的SVN/Subversion仓库的URL和凭据信息。您还可以指定要拉取的分支、标签等信息。 3. 单击“保存”按钮保存您的配置。 接下来,您需要配置Jenkins与FTP服务器集成,以便能够自动将构建结果上传到FTP服务器上。具体步骤如下: 1. 在Jenkins的构建页面中,单击“后构建操作”选项卡,并选择“FTP上传”选项。 2. 在“FTP上传”页面中,输入您的FTP服务器的地址、用户名、密码等信息。您还可以指定要上传的文件、目录等信息。 3. 单击“保存”按钮保存您的配置。 最后,您可以编写一个BAT脚本来自动化执行上述步骤,以便能够一次性完成代码拉取、构建和部署的过程。具体内容如下: ``` @echo off REM 拉取代码 svn checkout svn://svn.server/path/to/repo C:\path\to\local\workspace REM 构建代码 "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" C:\path\to\local\workspace\YourProject.sln /t:Rebuild /p:Configuration=Release /p:Platform="Any CPU" REM 上传到FTP服务器 "C:\Program Files (x86)\WinSCP\WinSCP.com" /command ^ "open ftp://username:password@ftp.server" ^ "put C:\path\to\local\workspace\YourProject\bin\Release\* /remote/path/" ^ "exit" ``` 以上就是实现自动化部署的大致步骤,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值