[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理如何获取FTP上面下载1天前的文件?

如果在ftp上文件的命名不包含时间信息,只能通过文件的属性来看的话,请问怎么获取这个文件的时间信息?
像附件图中的系统文件的时间能不能直接读出来?
[attach]1583[/attach]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

如果文件夹名称都是 20090403 这种格式的日期,可以试试这样:
  1. @echo off
  2. rem 指定FTP用户名
  3. set ftpUser=asx
  4. rem 指定FTP密码
  5. set ftpPass=asx-asx
  6. rem 指定FTP服务器地址
  7. set ftpIP=172.19.103.7
  8. rem 指定待下载的文件位于FTP服务器的什么位置
  9. set ftpFolder=/export/home/PROD/ntcdata
  10. rem 指定从FTP下载下来的文件存放到什么地方
  11. set LocalFolder=E:\Temp
  12. rem 指定下载几天前的文件
  13. set DaysAgo=1
  14. for /f %%i in ('PowerShell -Command "&{Get-Date (Get-Date).AddDays(-%DaysAgo%) -uformat "%%Y%%m%%d"}"') do (
  15.     set "DstDate=%%i"
  16. )
  17. set ftpFolder=%ftpFolder%/%DstDate%
  18. set ftpFile=%temp%\TempFTP.txt
  19. >"%ftpFile%" echo,%ftpUser%
  20. >>"%ftpFile%" echo,%ftpPass%
  21. >>"%ftpFile%" echo cd "%ftpFolder%"
  22. >>"%ftpFile%" echo lcd "%LocalFolder%"
  23. >>"%ftpFile%" echo bin
  24. >>"%ftpFile%" echo mget *.*
  25. >>"%ftpFile%" echo bye
  26. start ftp -v -i -s:"%ftpFile%" %ftpIP%
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

如果能获取文件的属性信息,那么为什么不能获得它的时间信息?

TOP

其实可以通过解析dir命令的输出来得到。
比如连到某个ftp服务器后来得的结果:
ftp> dir
drwx------ 1 user group              0 Apr 01 11:23 a
-rwx------ 1 user group           1285 Mar 28 2008 readme.txt

ftpFile:user\pass\cd path\dir\bye

for /f %%a in ('ftp -v -i -s:"%ftpFile%" %ftpIP%') do ...
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 3楼 的帖子

那是网络编程实现的
批处理没有这功能
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

哦,是不是我要另外写个程序,然后用批处理调用才能获取时间信息?

TOP

回复 6楼 的帖子

你可以参照4楼的方法,在dir命令的返回结果中获取日期信息。
不过,日期信息所在列是不确定的,而且格式也是不同的。
你可以先看看自己连上的FTP服务器后,dir命令的返回结果如何。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我已经截得图片:
不知道怎么个写法?

TOP

回复 8楼 的帖子

先把英文月份转换成数字
再计算日期
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我重新上个图,最后一列是文件,倒数第2列是代表时间。
[attach]1581[/attach]

TOP

关于时间轴的转换,希望batcher发个链接。

TOP

回复 11楼 的帖子

在动手写代码之前,还有一点需要确认,那就是倒数第二列的时间。
大于某个时间(比如6个月之前)的文件,倒数第二列会显示年;小于某个时间(比如6个月之内)的文件,倒数第二列会显示时间。
你需要问问服务器管理员这里是如何设置的。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

如果倒数第二列都是按日期+时间的形式存在呢?

TOP

回复 13楼 的帖子

你能确定它们都是2009年?万一有些是2008年咋办?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我可以确定,没有08年的

TOP

返回列表