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

[文本处理] 批处理ftp下载以指定字符串开头的压缩包文件并进行解压缩

[复制链接]
发表于 2008-8-11 16:42:17 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2018-9-30 23:22 编辑

求助论坛里的高手,现在我有一个问题,是这样描述的:
1、通过ftp访问服务器文件夹,路经如下:/home/mfg/ifx/components/data.
2、取文件夹里的数据。数据文件夹按日期生成,如“20080811”名字的文件夹,数据在文件夹中。但是我只想取里面d10开头的文件。
3、把数据存放到本地指定文件夹中并进行解压缩。
发表于 2008-8-11 17:12:48 | 显示全部楼层
取今天的数据
  1. @echo off
  2. set today=%date:~0,10%
  3. set today=%today:-=%
  4. set FtpFile=%temp%\TempAcc.txt
  5. >"%FtpFile%" echo USERNAME
  6. >>"%FtpFile%" echo PASSWORD
  7. >>"%FtpFile%" echo bin
  8. >>"%FtpFile%" echo cd ifx/components/data/%today%
  9. >>"%FtpFile%" echo mget *.gz
  10. >>"%FtpFile%" echo bye
  11. start ftp -v -i -s:"%FtpFile%" IPADDRESS
  12. set rarpath=C:\Program Files\WinRAR
  13. "%rarpath%\rar.exe" x -y *.gz -ad "C:\test\newfolder"
复制代码
下次记得把具体环境和要求表述清楚^_^
发表于 2008-8-11 17:17:53 | 显示全部楼层
取昨天的数据
  1. @echo off
  2. >"%tmp%\MyDel.vbs" echo dt=date()-1
  3. >>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
  4. >>"%tmp%\MyDel.vbs" echo wscript.echo s
  5. for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a
  6. set FtpFile=%temp%\TempAcc.txt
  7. >"%FtpFile%" echo USERNAME
  8. >>"%FtpFile%" echo PASSWORD
  9. >>"%FtpFile%" echo bin
  10. >>"%FtpFile%" echo cd ifx/components/data/%yesterday%
  11. >>"%FtpFile%" echo mget *.gz
  12. >>"%FtpFile%" echo bye
  13. start ftp -v -i -s:"%FtpFile%" IPADDRESS
  14. set rarpath=C:\Program Files\WinRAR
  15. "%rarpath%\rar.exe" x -y *.gz -ad "C:\test\newfolder"
复制代码
发表于 2008-8-11 17:46:15 | 显示全部楼层
如果没有成功,把第一行删除,再最后加一行:
pause
再运行一遍,把结果贴出来看看。
发表于 2008-8-12 09:03:16 | 显示全部楼层
应楼主需求,解压时不带路径,解压后删除压缩文件。
  1. @echo off
  2. >"%tmp%\MyDel.vbs" echo dt=date()-1
  3. >>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
  4. >>"%tmp%\MyDel.vbs" echo wscript.echo s
  5. for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a
  6. set FtpFile=%temp%\TempAcc.txt
  7. >"%FtpFile%" echo USERNAME
  8. >>"%FtpFile%" echo PASSWORD
  9. >>"%FtpFile%" echo bin
  10. >>"%FtpFile%" echo cd ifx/components/data/%yesterday%
  11. >>"%FtpFile%" echo mget *.gz
  12. >>"%FtpFile%" echo bye
  13. start ftp -v -i -s:"%FtpFile%" IPADDRESS
  14. set rarpath=C:\Program Files\WinRAR
  15. "%rarpath%\rar.exe" x -y *.gz "C:\test\newfolder"&&del /q *.gz
复制代码
 楼主| 发表于 2008-8-12 09:24:54 | 显示全部楼层
你好,我把代码改成了如下:
>"%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 username
>>"%FtpFile%" echo password
>>"%FtpFile%" echo bin
>>"%FtpFile%" echo cd ifx/components/data/%yesterday%
>>"%FtpFile%" echo mget *.gz
>>"%FtpFile%" echo bye
start ftp -v -i -s:"%FtpFile%" ipaddress
set rarpath=C:\Program Files\WinRAR
"%rarpath%\WinRAR.exe" x -y *.gz -e "C:\ftp\"
pause

不过还有几个问题:
1、可以连接ftp并下载文件,但是自解压步骤不执行,只有再次运行批处理文件才执行
2、能否把下载的原文件在解压后删除?
发表于 2008-8-12 16:23:24 | 显示全部楼层
  1. >"%tmp%\MyDel.vbs" echo dt=date()-1
  2. >>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)
  3. >>"%tmp%\MyDel.vbs" echo wscript.echo s
  4. for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set yesterday=%%a
  5. set FtpFile=%temp%\TempAcc.txt
  6. >"%FtpFile%" echo username
  7. >>"%FtpFile%" echo password
  8. >>"%FtpFile%" echo bin
  9. >>"%FtpFile%" echo cd ifx/components/data/%yesterday%
  10. >>"%FtpFile%" echo mget *.gz
  11. >>"%FtpFile%" echo bye
  12. start ftp -v -i -s:"%FtpFile%" ipaddress
  13. rem 请根据下载文件的多少,自行修改下面延时的长短:
  14. ping -n 30 127.1>nul
  15. set rarpath=C:\Program Files\WinRAR
  16. "%rarpath%\WinRAR.exe" x -y *.gz -e "C:\ftp"&&del /q *.gz
  17. pause
复制代码
如果出错,记得把报错信息贴出来。
 楼主| 发表于 2008-8-12 17:12:47 | 显示全部楼层
如果我想把下载过的源文件删除,应该怎么做?
发表于 2008-8-12 17:17:08 | 显示全部楼层
倒数第二句不是有del吗?
 楼主| 发表于 2008-8-12 17:26:51 | 显示全部楼层
哦,不好意思。我知道了
发表于 2008-8-12 17:36:53 | 显示全部楼层
ping -n 30 127.1>nul,这句是什么意思?

批处理中延时的一种方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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