[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

取今天的数据
  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"
复制代码
下次记得把具体环境和要求表述清楚^_^
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

取昨天的数据
  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"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

如果没有成功,把第一行删除,再最后加一行:
pause
再运行一遍,把结果贴出来看看。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

应楼主需求,解压时不带路径,解压后删除压缩文件。
  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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

你好,我把代码改成了如下:
>"%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、能否把下载的原文件在解压后删除?

TOP

  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
复制代码
如果出错,记得把报错信息贴出来。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

如果我想把下载过的源文件删除,应该怎么做?

TOP

倒数第二句不是有del吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

哦,不好意思。我知道了

TOP

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

批处理中延时的一种方法
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表