标题: [文本处理] 批处理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
取今天的数据- @echo off
- set today=%date:~0,10%
- set today=%today:-=%
- set FtpFile=%temp%\TempAcc.txt
- >"%FtpFile%" echo USERNAME
- >>"%FtpFile%" echo PASSWORD
- >>"%FtpFile%" echo bin
- >>"%FtpFile%" echo cd ifx/components/data/%today%
- >>"%FtpFile%" echo mget *.gz
- >>"%FtpFile%" echo bye
- start ftp -v -i -s:"%FtpFile%" IPADDRESS
- set rarpath=C:\Program Files\WinRAR
- "%rarpath%\rar.exe" x -y *.gz -ad "C:\test\newfolder"
复制代码
下次记得把具体环境和要求表述清楚^_^
作者: Batcher 时间: 2008-8-11 17:17
取昨天的数据- @echo off
- >"%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%\rar.exe" x -y *.gz -ad "C:\test\newfolder"
复制代码
作者: Batcher 时间: 2008-8-11 17:46
如果没有成功,把第一行删除,再最后加一行:
pause
再运行一遍,把结果贴出来看看。
作者: Batcher 时间: 2008-8-12 09:03
应楼主需求,解压时不带路径,解压后删除压缩文件。- @echo off
- >"%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%\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
- >"%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
- rem 请根据下载文件的多少,自行修改下面延时的长短:
- ping -n 30 127.1>nul
- set rarpath=C:\Program Files\WinRAR
- "%rarpath%\WinRAR.exe" x -y *.gz -e "C:\ftp\"&&del /q *.gz
- 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://www.bathome.net/) |
Powered by Discuz! 7.2 |