如何在ant中查看部分文件名和delete/replace文件?
How to check part of file name and delete/replace the file in ant?
如何从下载中检查部分文件名并替换目标中的旧文件。
版本是文件名的一部分。如果旧版本文件不存在,则只需复制它。考虑 'downloads' 中的文件是最新的。
文件夹 'downloads' 有来自服务器的最新文件。和 'target' 文件夹,其中一些文件已经存在。
文件名模式:<UNIQUE_NAME>_<VERSION>_<SOME-TYPE>.dat
/下载 - 这里都是最新的
FILE01_01.02.03_xy-z.dat
FILE02_02.03.04_xy-z.dat
FILE_11_03.04.05_xy-z.dat
/目标 - 之前
FILE02_01.00.02_xy-z.dat
FILE04_01.00.00_xy-z.dat
FILE_03_01.00.01_xy-z.dat
FILE_11_01.01.00_xy-z.dat
/目标 - 移动后 (ToDo)
FILE01_01.02.03_xy-z.dat - 目标中不存在(只需复制)
FILE02_02.03.04_xy-z.dat - 替换为最新的
FILE04_01.00.00_xy-z.dat - 无法下载最新版本(什么都不做)
FILE_03_01.00.01_xy-z.dat - 无法下载最新版本(什么都不做)
FILE_11_03.04.05_xy-z.dat - 替换为最新的
为 'for loop'
添加库
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="lib/ant-contrib-1.0b3.jar" />
</classpath>
</taskdef>
通过迭代下载中的所有文件进行更新
<target name="update" depends="download" description="moves downloded dat files to projects dest">
<for param="file" delimiter=";">
<path>
<fileset dir="${downloads}" includes="*.dat" casesensitive="false" />
</path>
<sequential>
<echo>file: @{file}</echo>
<basename file="@{file}" property="filename" />
<!--echo>filename: ${filename}</echo-->
<propertyregex property="uniq" input="${filename}" regexp="^[^.]*(?=_)" select="[=11=]" casesensitive="false" />
<echo>uniq: ${uniq}</echo>
<delete dir="${dest}" includes="${uniq}*" />
<copy file="@{file}" tofile="${dest}/${filename}" />
<var name="uniq" unset="true" />
<var name="filename" unset="true" />
</sequential>
</for>
</target>
如何从下载中检查部分文件名并替换目标中的旧文件。
版本是文件名的一部分。如果旧版本文件不存在,则只需复制它。考虑 'downloads' 中的文件是最新的。
文件夹 'downloads' 有来自服务器的最新文件。和 'target' 文件夹,其中一些文件已经存在。
文件名模式:<UNIQUE_NAME>_<VERSION>_<SOME-TYPE>.dat
/下载 - 这里都是最新的
FILE01_01.02.03_xy-z.dat
FILE02_02.03.04_xy-z.dat
FILE_11_03.04.05_xy-z.dat
/目标 - 之前
FILE02_01.00.02_xy-z.dat
FILE04_01.00.00_xy-z.dat
FILE_03_01.00.01_xy-z.dat
FILE_11_01.01.00_xy-z.dat
/目标 - 移动后 (ToDo)
FILE01_01.02.03_xy-z.dat - 目标中不存在(只需复制)
FILE02_02.03.04_xy-z.dat - 替换为最新的
FILE04_01.00.00_xy-z.dat - 无法下载最新版本(什么都不做)
FILE_03_01.00.01_xy-z.dat - 无法下载最新版本(什么都不做)
FILE_11_03.04.05_xy-z.dat - 替换为最新的
为 'for loop'
添加库<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="lib/ant-contrib-1.0b3.jar" />
</classpath>
</taskdef>
通过迭代下载中的所有文件进行更新
<target name="update" depends="download" description="moves downloded dat files to projects dest">
<for param="file" delimiter=";">
<path>
<fileset dir="${downloads}" includes="*.dat" casesensitive="false" />
</path>
<sequential>
<echo>file: @{file}</echo>
<basename file="@{file}" property="filename" />
<!--echo>filename: ${filename}</echo-->
<propertyregex property="uniq" input="${filename}" regexp="^[^.]*(?=_)" select="[=11=]" casesensitive="false" />
<echo>uniq: ${uniq}</echo>
<delete dir="${dest}" includes="${uniq}*" />
<copy file="@{file}" tofile="${dest}/${filename}" />
<var name="uniq" unset="true" />
<var name="filename" unset="true" />
</sequential>
</for>
</target>