Как проверить часть имени файла и удалить / заменить файл в ant? - PullRequest
0 голосов
/ 01 апреля 2019

Как я могу проверить часть имени файла из загрузок и заменить старый файл из цели.Версия является частью имени файла.Если файл старой версии не существует, просто скопируйте его.Считайте, что файлы в «загрузках» являются самыми последними.

Папка «Загрузки» содержит последний файл с сервера.И целевая папка, в которой уже есть какой-то файл.

Шаблон имени файла: <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 - заменено на последнее

1 Ответ

0 голосов
/ 16 апреля 2019

Добавить библиотеку для '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="\0" 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>
...