标题: [文件操作] 【已解决】求一个从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
- 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楼 的帖子
- @echo off
- rem 指定FTP用户名
- set ftpUser=USERNAME
- rem 指定FTP密码
- set ftpPass=PASSWORD
- rem 指定FTP服务器地址
- set ftpIP=192.168.0.2
- rem 指定待下载的文件位于FTP服务器的什么位置
- set ftpFolder=SharedFile\
- rem 指定从FTP下载下来的文件存放到什么地方
- set DownFolder=C:\temp\
- >"%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
- set ftpFile=%temp%\TempAcc.txt
- >"%ftpFile%" echo %ftpUser%
- >>"%ftpFile%" echo %ftpPass%
- >>"%ftpFile%" echo cd "%ftpFolder%"
- >>"%ftpFile%" echo lcd "%DownFolder%"
- >>"%ftpFile%" echo bin
- >>"%ftpFile%" echo mget DSTAT_1PASS.*.%yesterday%*.txt
- >>"%ftpFile%" echo bye
- start ftp -v -i -s:"%ftpFile%" %ftpIP%
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |