Board logo

标题: [文件操作] 【已解决】求一个从ftp下载指定日期之前的文件的批处理 [打印本页]

作者: lazygc520    时间: 2009-4-1 09:57     标题: 【已解决】求一个从ftp下载指定日期之前的文件的批处理

求一个从ftp上获取数据的综合批处理:
1.链接ftp ip(Username Password)
2.在指定路径下获得本机时间的昨天(当前的日期-1天)往前10天的文件,文件格式为DSTAT_1PASS.xxxx.txt。
(顺便问一下,如果ftp的目录下有多个名称固定的文件夹,我需要把某些特定的文件夹都访问一下,有没有什么简单的方法,如果不行的话就只能一个路径一个路径的获取)
3.文件抓取存到本机指定的目录下。
(如果从ftp上获取的文件需要存到本机上两个不同的路径,怎么写?)

[ 本帖最后由 lazygc520 于 2009-4-3 10:39 编辑 ]
作者: pusofalse    时间: 2009-4-1 10:30

  1. 2.在指定路径下获得本机时间的昨天(当前的日期-1天)往前10天的文件,文件格式为DSTAT_1PASS.xxxx.txt。
复制代码
1:“获得本机时间的昨天往前10天的文件”,这句什么意思?比如今天是3月20日,要获取哪天的?另外DSTAT_1PASS.xxxx.txt,要下载的文件名?xxxx代表什么?日期?
2: 开始-->运行-->cmd-->echo %date%,结果贴出来看下。
或参考以下链接:http://bbs.bathome.net/search.ph ... bmit=yes&page=1
作者: lazygc520    时间: 2009-4-1 10:34

1.如果今天是3.20,那就取3.19-3.10的所有相关文件。我是要下载格式为DSTAT_1PASS.xxxxxxx(xxxxx代表其他的信息).txt的文件。
作者: lazygc520    时间: 2009-4-1 10:39

希望bather能够帮忙解答一下。
作者: pusofalse    时间: 2009-4-1 11:06

下载而不是上传指定日期的文件,- - 用批处理来完成的话我果真不会,请教高人~
作者: Batcher    时间: 2009-4-1 11:37

链接ftp ip(Username Password)

这个问题看了2楼的链接,搞清楚了没?
在指定路径下获得本机时间的昨天(当前的日期-1天)往前10天的文件

计算N天前的日期可参考:批处理获取指定天数之前的日期
http://bbs.bathome.net/thread-3330-1-1.html
文件格式为DSTAT_1PASS.xxxx.txt

xxxx代表四位字符?还是不定位数字符?能否给一个真实文件名看看?
文件名中是否包含日期信息?
作者: lazygc520    时间: 2009-4-1 12:03

应该是不定位的字符,文件名例子:DSTAT_1PASS.F849462T0G.FT4.20090309125826.txt
希望batcher给出完整代码,谢谢。如果有些文件命名中不含时间信息,那么怎样(通过ftp时间)获得?
作者: Batcher    时间: 2009-4-1 12:13

文件名中DSTAT_1PASS.F849462T0G.FT4.这段是不是固定的?或者有啥规律?
“不含时间信息”无法直接获得,只能全部下载到本地,再用批处理删除不需要的。
作者: lazygc520    时间: 2009-4-1 12:22

长度是固定的,这样可以吗?
作者: Batcher    时间: 2009-4-1 12:25     标题: 回复 9楼 的帖子

要想直接下载,必须要求文件名(或文件夹名)中包含日期信息。
否则只能全部下载,再删除不需要的文件。
作者: lazygc520    时间: 2009-4-1 12:26

像我附件图片这样的数据信息好不好按时间抓取?
[attach]1537[/attach]
作者: lazygc520    时间: 2009-4-1 12:29

那请问batcher,DSTAT_1PASS.F849462T0G.FT4.20090309125826.txt 这样的文件信息能不能通过时间来抓取?
作者: Batcher    时间: 2009-4-1 14:26     标题: 回复 12楼 的帖子

可以根据文件名中20090309来获取
如果文件名中不包含日期信息就没办法了
作者: lazygc520    时间: 2009-4-1 14:41

哦,像上面一个截图的文件是不能按日期来获取?
希望batcher给出完整的代码(关于上面的txt文件,假如只获取昨天的数据),谢谢!

[ 本帖最后由 lazygc520 于 2009-4-1 14:47 编辑 ]
作者: 依山居    时间: 2009-4-1 15:25

如果有FTP 服务器的权限,可以写一批处理生成每天需要下载的文件列表到一个文本中,这样就简单多了
作者: Batcher    时间: 2009-4-1 15:28     标题: 回复 14楼 的帖子

截图中的文件名不包含日期信息,无法获取。
作者: lazygc520    时间: 2009-4-1 15:46

我不是问截图中的文件如何获取,我是问*.txt文件的信息应该如何获取?条件参照顶楼,还是希望batcher给出代码.谢谢!~
作者: Batcher    时间: 2009-4-1 16:15     标题: 回复 17楼 的帖子

我还是希望你能自己尝试一下“如何自动连接FTP”“如何获取昨天的日期”
如果搞不定,我随时愿意帮你。
作者: lazygc520    时间: 2009-4-1 16:27

自动连ftp:

>"%FtpFile%" echo username
>>"%FtpFile%" echo password
>>"%FtpFile%" echo path
>>"%FtpFile%" echo mget *.txt
>>"%FtpFile%" echo bye
start ftp -v -i -s:"%FtpFile%" ftp ip

获取昨天的日期:

>"%tmp%\MyDel.vbs" echo dt=date()-1
>>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
>>"%tmp%\MyDel.vbs" echo wscript.echo s
for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a

不过如果要去dstat_1pass的格式文件怎么取?
作者: lazygc520    时间: 2009-4-1 16:29

关键我怎么取昨天的信息,这个不会。。
还是希望给出代码。。。

[ 本帖最后由 lazygc520 于 2009-4-1 16:30 编辑 ]
作者: Batcher    时间: 2009-4-1 16:48     标题: 回复 19楼 的帖子

  1. @echo off
  2. rem 指定FTP用户名
  3. set ftpUser=USERNAME
  4. rem 指定FTP密码
  5. set ftpPass=PASSWORD
  6. rem 指定FTP服务器地址
  7. set ftpIP=192.168.0.2
  8. rem 指定待下载的文件位于FTP服务器的什么位置
  9. set ftpFolder=SharedFile\
  10. rem 指定从FTP下载下来的文件存放到什么地方
  11. set DownFolder=C:\temp\
  12. >"%tmp%\MyDel.vbs" echo dt=date()-1
  13. >>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
  14. >>"%tmp%\MyDel.vbs" echo wscript.echo s
  15. for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a
  16. set ftpFile=%temp%\TempAcc.txt
  17. >"%ftpFile%" echo %ftpUser%
  18. >>"%ftpFile%" echo %ftpPass%
  19. >>"%ftpFile%" echo cd "%ftpFolder%"
  20. >>"%ftpFile%" echo lcd "%DownFolder%"
  21. >>"%ftpFile%" echo bin
  22. >>"%ftpFile%" echo mget DSTAT_1PASS.*.%yesterday%*.txt
  23. >>"%ftpFile%" echo bye
  24. start ftp -v -i -s:"%ftpFile%" %ftpIP%
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2