找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 249503|回复: 69

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

[复制链接]
发表于 2009-4-3 10:01:26 | 显示全部楼层 |阅读模式
如果在ftp上文件的命名不包含时间信息,只能通过文件的属性来看的话,请问怎么获取这个文件的时间信息?
像附件图中的系统文件的时间能不能直接读出来?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2009-4-3 12:13:22 | 显示全部楼层
如果文件夹名称都是 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%
复制代码
 楼主| 发表于 2009-4-3 12:36:11 | 显示全部楼层
如果能获取文件的属性信息,那么为什么不能获得它的时间信息?
发表于 2009-4-3 12:37:25 | 显示全部楼层
其实可以通过解析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 ...
发表于 2009-4-3 12:37:26 | 显示全部楼层

回复 3楼 的帖子

那是网络编程实现的
批处理没有这功能
 楼主| 发表于 2009-4-3 12:39:56 | 显示全部楼层
哦,是不是我要另外写个程序,然后用批处理调用才能获取时间信息?
发表于 2009-4-3 12:44:56 | 显示全部楼层

回复 6楼 的帖子

你可以参照4楼的方法,在dir命令的返回结果中获取日期信息。
不过,日期信息所在列是不确定的,而且格式也是不同的。
你可以先看看自己连上的FTP服务器后,dir命令的返回结果如何。
 楼主| 发表于 2009-4-3 12:52:17 | 显示全部楼层
我已经截得图片:
不知道怎么个写法?
发表于 2009-4-3 12:59:02 | 显示全部楼层

回复 8楼 的帖子

先把英文月份转换成数字
再计算日期
 楼主| 发表于 2009-4-3 13:06:48 | 显示全部楼层
我重新上个图,最后一列是文件,倒数第2列是代表时间。
 楼主| 发表于 2009-4-3 13:16:19 | 显示全部楼层
关于时间轴的转换,希望batcher发个链接。
发表于 2009-4-3 13:25:45 | 显示全部楼层

回复 11楼 的帖子

在动手写代码之前,还有一点需要确认,那就是倒数第二列的时间。
大于某个时间(比如6个月之前)的文件,倒数第二列会显示年;小于某个时间(比如6个月之内)的文件,倒数第二列会显示时间。
你需要问问服务器管理员这里是如何设置的。
 楼主| 发表于 2009-4-3 14:17:57 | 显示全部楼层
如果倒数第二列都是按日期+时间的形式存在呢?
发表于 2009-4-3 14:22:52 | 显示全部楼层

回复 13楼 的帖子

你能确定它们都是2009年?万一有些是2008年咋办?
 楼主| 发表于 2009-4-3 14:24:06 | 显示全部楼层
我可以确定,没有08年的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:04 , Processed in 0.029336 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表