AM电脑吧 - Win10精简版系统_Win11精简版_Win7旗舰版

Yes
查看: 4725|回复: 2
收起左侧

[Server] 快速从ftp下载最新软件包的批处理脚本

[复制链接]
ampc81075

签到天数: 2 天

[LV.1]一个记事本

id 柳明 发表于 2015-11-15 11:23:39
背景
客户端放置在一个公共的ftp上面。每天频繁登陆ftp下载,或者使用ftp工具,每次都要点击同步,都不太方便。如果在linux下就好了,然而在windows也是可以运行脚本的,何不尝试下呢。
1.png
  1. @echo off
  2. rem for download file
  3. rem ftp config
  4. rem ip login_name password remote_dir

  5. set "ftp_ip=192.168.0.1"
  6. set "ftp_user=admin"
  7. set "ftp_pass=123456"
  8. set "ftp_path=/"

  9. set "f_tmp=tmp"
  10. set "f_info=tmp\tmp_info.dat"
  11. set "f_list=tmp\tmp_list.dat"

  12. rd /s /q pack
  13. mkdir %f_tmp%

  14. echo open %ftp_ip% > %f_info%
  15. echo user %ftp_user% >> %f_info%
  16. echo %ftp_pass%>> %f_info%
  17. echo prompt >> %f_info%
  18. echo binary >> %f_info%
  19. echo cd %ftp_path% >> %f_info%
  20. echo ls . %f_list% >> %f_info%
  21. echo lcd %f_tmp% >> %f_info%
  22. echo disconnect >> %f_info%
  23. echo bye >> %f_info%

  24. ftp -v -n -s:%f_info%


  25. for /f "delims=" %%i in ('type "%f_list%"') do (
  26.     set "target_7z=%%i"
  27. )

  28. echo open %ftp_ip% > %f_info%
  29. echo user %ftp_user% >> %f_info%
  30. echo %ftp_pass%>> %f_info%
  31. echo prompt >> %f_info%
  32. echo binary >> %f_info%
  33. echo cd %ftp_path% >> %f_info%
  34. echo lcd %f_tmp% >> %f_info%
  35. echo get %target_7z%>> %f_info%
  36. echo disconnect >> %f_info%
  37. echo bye >> %f_info%

  38. ftp -v -n -s:%f_info%

  39. call tools\7z\x64\7za.exe x %f_tmp%\%target_7z%

  40. rd /s /q %f_tmp%

  41. exit
复制代码


获取文件列表:
  1. echo open %ftp_ip% > %f_info%
  2. echo user %ftp_user% >> %f_info%
  3. echo %ftp_pass%>> %f_info%
  4. echo prompt >> %f_info%
  5. echo binary >> %f_info%
  6. echo cd %ftp_path% >> %f_info%
  7. echo ls . %f_list% >> %f_info%
  8. echo lcd %f_tmp% >> %f_info%
  9. echo disconnect >> %f_info%
  10. echo bye >> %f_info%

  11. 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%

本文地址: https://www.ampc8.com/thread-20636-1-1.html
上一篇:戴尔创始人:PC离死还早着呢
下一篇:广电总局全面封杀电视盒的理由:更好的监管!
回复

举报

ampc815656

签到天数: 514 天

[LV.9]九级电脑高手

id 虎啸龙呤 发表于 2015-11-15 18:19:14
学习了,谢谢分享。
回复

举报

ampc810336

签到天数: 3806 天

[LV.Master]顶级配置

id leo 发表于 2015-11-15 12:38:20
还不错,可以尝试一下。
回复

举报

您需要登录后才可以回帖 登录 | 验证注册

Powered by AMpc8.Com (晋ICP备13003365号ghs 晋公网安备 14090202000112号 |GMT+8, 2024/5/6 23:35 |
快速回复 返回顶部 返回列表