返回列表 发帖

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

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

评分人数

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

如果文件夹名称都是 20090403 这种格式的日期,可以试试这样:
@echo off
rem 指定FTP用户名
set ftpUser=asx
rem 指定FTP密码
set ftpPass=asx-asx
rem 指定FTP服务器地址
set ftpIP=172.19.103.7
rem 指定待下载的文件位于FTP服务器的什么位置
set ftpFolder=/export/home/PROD/ntcdata
rem 指定从FTP下载下来的文件存放到什么地方
set LocalFolder=E:\Temp
rem 指定下载几天前的文件
set DaysAgo=1
for /f %%i in ('PowerShell -Command "&{Get-Date (Get-Date).AddDays(-%DaysAgo%) -uformat "%%Y%%m%%d"}"') do (
    set "DstDate=%%i"
)
set ftpFolder=%ftpFolder%/%DstDate%
set ftpFile=%temp%\TempFTP.txt
>"%ftpFile%" echo,%ftpUser%
>>"%ftpFile%" echo,%ftpPass%
>>"%ftpFile%" echo cd "%ftpFolder%"
>>"%ftpFile%" echo lcd "%LocalFolder%"
>>"%ftpFile%" echo bin
>>"%ftpFile%" echo mget *.*
>>"%ftpFile%" echo bye
start ftp -v -i -s:"%ftpFile%" %ftpIP%COPY
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或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

返回列表