背景
客户端放置在一个公共的ftp上面。每天频繁登陆ftp下载,或者使用ftp工具,每次都要点击同步,都不太方便。如果在linux下就好了,然而在windows也是可以运行脚本的,何不尝试下呢。
- @echo off
- rem for download file
- rem ftp config
- rem ip login_name password remote_dir
- set "ftp_ip=192.168.0.1"
- set "ftp_user=admin"
- set "ftp_pass=123456"
- set "ftp_path=/"
- set "f_tmp=tmp"
- set "f_info=tmp\tmp_info.dat"
- set "f_list=tmp\tmp_list.dat"
- rd /s /q pack
- mkdir %f_tmp%
- 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%
- 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%
- call tools\7z\x64\7za.exe x %f_tmp%\%target_7z%
- rd /s /q %f_tmp%
- 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命令,下载我们最新的文件了。以上就实现了动态下载最新文件了。
call tools\7z\x64\7za.exe x %f_tmp%\%target_7z% |