Board logo

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

作者: lazygc520    时间: 2008-8-11 16:42     标题: 批处理ftp下载以指定字符串开头的压缩包文件并进行解压缩

本帖最后由 pcl_test 于 2018-9-30 23:22 编辑

求助论坛里的高手,现在我有一个问题,是这样描述的:
1、通过ftp访问服务器文件夹,路经如下:/home/mfg/ifx/components/data.
2、取文件夹里的数据。数据文件夹按日期生成,如“20080811”名字的文件夹,数据在文件夹中。但是我只想取里面d10开头的文件。
3、把数据存放到本地指定文件夹中并进行解压缩。
作者: Batcher    时间: 2008-8-11 17:12

取今天的数据
  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"
复制代码
下次记得把具体环境和要求表述清楚^_^
作者: Batcher    时间: 2008-8-11 17:17

取昨天的数据
  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"
复制代码

作者: Batcher    时间: 2008-8-11 17:46

如果没有成功,把第一行删除,再最后加一行:
pause
再运行一遍,把结果贴出来看看。
作者: Batcher    时间: 2008-8-12 09:03

应楼主需求,解压时不带路径,解压后删除压缩文件。
  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
复制代码

作者: lazygc520    时间: 2008-8-12 09:24

你好,我把代码改成了如下:
>"%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、能否把下载的原文件在解压后删除?
作者: Batcher    时间: 2008-8-12 16:23

  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
复制代码
如果出错,记得把报错信息贴出来。
作者: lazygc520    时间: 2008-8-12 17:12

如果我想把下载过的源文件删除,应该怎么做?
作者: Batcher    时间: 2008-8-12 17:17

倒数第二句不是有del吗?
作者: lazygc520    时间: 2008-8-12 17:26

哦,不好意思。我知道了
作者: Batcher    时间: 2008-8-12 17:36

ping -n 30 127.1>nul,这句是什么意思?

批处理中延时的一种方法




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