我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

背景

由于敏捷开发,快速迭代,我们项目会有三个版本,也就意味着我要去获取三次软件包。我负责服务端开发,所以我经常需要去拿最新的客户端。我们的客户端放置在一个公共的ftp上面。每天频繁登陆ftp下载,或者使用ftp工具,每次都要点击同步,都不太方便。如果在linux下就好了,然而在windows也是可以运行脚本的,何不尝试下呢。

完整代码


 1 @echo off
 2 rem for download file
 3 rem ftp config 
 4 rem ip login_name password remote_dir
 5 
 6 set 'ftp_ip=192.168.0.1'
 7 set 'ftp_user=admin'
 8 set 'ftp_pass=123456'
 9 set 'ftp_path=/'
10 
11 set 'f_tmp=tmp'
12 set 'f_info=tmp	mp_info.dat'
13 set 'f_list=tmp	mp_list.dat'
14 
15 rd /s /q pack
16 mkdir %f_tmp%
17 
18 echo open %ftp_ip% > %f_info%
19 echo user %ftp_user% >> %f_info%
20 echo %ftp_pass%>> %f_info%
21 echo prompt >> %f_info%
22 echo binary >> %f_info%
23 echo cd %ftp_path% >> %f_info%
24 echo ls . %f_list% >> %f_info%
25 echo lcd %f_tmp% >> %f_info%
26 echo disconnect >> %f_info%
27 echo bye >> %f_info%
28 
29 ftp -v -n -s:%f_info%
30 
31 
32 for /f 'delims=' %%i in ('type '%f_list%'') do (
33     set 'target_7z=%%i'
34 )
35 
36 echo open %ftp_ip% > %f_info%
37 echo user %ftp_user% >> %f_info%
38 echo %ftp_pass%>> %f_info%
39 echo prompt >> %f_info%
40 echo binary >> %f_info%
41 echo cd %ftp_path% >> %f_info%
42 echo lcd %f_tmp% >> %f_info%
43 echo get %target_7z%>> %f_info%
44 echo disconnect >> %f_info%
45 echo bye >> %f_info%
46 
47 ftp -v -n -s:%f_info%
48 
49 call toolszdza.exe x %f_tmp%%target_7z%
50 
51 rd /s /q %f_tmp%
52 
53 exit
批处理脚本

运行脚本

运行脚本

逐步解释

获取文件列表

echo open %ftp_ip% > %f_info%
echo user %ftp_user% >> %f_info%
echo %ftp_pass%>> %f_info%
echo prompt >> %f_info%
echo binary >> %f_info%
echo cd %ftp_path% >> %f_info%
echo ls . %f_list% >> %f_info%
echo lcd %f_tmp% >> %f_info%
echo disconnect >> %f_info%
echo bye >> %f_info%

ftp -v -n -s:%f_info%

这部分代码主要有以下几个作用:

  • 将ftp的命令写入到文件; 在ftp上获取对应目录的文件列表,并写到本地文件下。

    获取最新的一个文件

    for /f 'delims=' %%i in ('type '%f_list%'') do (
        set 'target_7z=%%i'
    )

    然后循环遍历文件列表,最终获取到最后一个列表(也就是最新的文件名)。

    下载最新文件

    echo open %ftp_ip% > %f_info%
    echo user %ftp_user% >> %f_info%
    echo %ftp_pass%>> %f_info%
    echo prompt >> %f_info%
    echo binary >> %f_info%
    echo cd %ftp_path% >> %f_info%
    echo lcd %f_tmp% >> %f_info%
    echo get %target_7z%>> %f_info%
    echo disconnect >> %f_info%
    echo bye >> %f_info%
    
    ftp -v -n -s:%f_info%

    有了文件名,我们就可以再执行一次ftp命令,下载我们最新的文件了。以上就实现了动态下载最新文件了。

    解压

    这边我们使用的软件包是7z打包的。所以也要下载7z解压工具。
    官方地址:http://www.7-zip.org/
    然后下载到命令行版,放置到任意可读取目录就可以了。

    call toolszdza.exe x %f_tmp%%target_7z%

    后话

    平常习惯了在linux下倒腾。可以写些脚本做些繁琐的事情,但是在windows经常就傻眼了。可视化的东西是有很多好处,但是也有些弊端。批处理脚本虽然不好用,但也并不是不可用。很多时候也可以带来很大的方便。当然会python、ruby这些脚本语言其实也是完全可以满足的。毕竟现在这年头批处理这种东西用的越来越少了。windows shell也可以,但是感觉也不太好用。

     

我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为1000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版百度优化、名注册、主机空间、手机网站建设公众号开发小程序制作、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线: 13820372851,我们会详细为你一一解答你心中的疑难。项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13820372851

上班时间

周一到周五

公司电话

022-26262675

二维码
线
在线留言