嗨,任何人都知道如何从FTP下载最新的文件夹.我有像Evolvenet_20111112.1 Evolvenet_20111113.1这样的文件夹,我必须下载最新的文件夹.任何人都可以帮我一个例子.
在此先感谢Bhasker.
Ftp列表无法正常工作,因为我的构建文件夹位于\ build\Evolvenet 2010 \中.登录到ftp服务器后,列表将采用默认文件夹.有没有办法指定转到该文件夹和列表.
谢谢,Bhasker.
我认为你需要做的是将其分解为几个步骤:
由于您的文件是使用yyyyMMdd.<version>模式命名的,因此您只需按名称对文件进行排序即可按日期顺序排列.
第1步:列出这样的文件
<ftp action="list"
server="${server}" userid="${user}"
password="${password}" listing="list.txt">
<fileset>
<include name="Evolvenet_*"/>
</fileset>
</ftp>
Run Code Online (Sandbox Code Playgroud)
步骤2-4:从列表中提取最新文件
<loadresource property="newest.file">
<concat>
<fileset file="list.txt"/>
</concat>
<filterchain>
<tokenfilter>
<replaceregex pattern=".*(Evolvenet_.*)" replace="\1"/>
</tokenfilter>
<sortfilter reverse="true"/>
<headfilter lines="1"/>
</filterchain>
</loadresource>
<echo message="newest.file ${newest.file}"/>
Run Code Online (Sandbox Code Playgroud)
第5步:使用FTP获取该文件
<ftp action="get"
server="${server}" userid="${user}"
password="${password}">
<fileset dir="download">
<include name="${newest.file}"/>
</fileset>
</ftp>
Run Code Online (Sandbox Code Playgroud)
我已回答好像Evolvenet_*是文件,但我注意到你说它们是目录.我认为所有需要更改以下载目录的是FTP get中的include子句:
<include name="${newest.file}/**"/>
Run Code Online (Sandbox Code Playgroud)
要列出某个目录(而不是用户的登录目录)的内容,请使用dirfileset 的属性指定远程目录,例如
<fileset dir="/build/Evolvenet 2010">
<include name="*"/>
</fileset>
Run Code Online (Sandbox Code Playgroud)