Как составить список двух самых последних папок в каталоге, используя их метку времени - PullRequest
1 голос
/ 08 мая 2019

У меня есть родительская папка, и внутри нее у меня есть несколько папок. Для автоматизации я хочу взять последнюю из двух папок в соответствии с отметкой времени.

Я попытался взять последнюю папку с помощью timstampselector.

    <timestampselector property="latest.modified">
        <path>
            <dirset dir="MyDirectoryPath">
                <include name="*" />
            </dirset>
        </path>
    </timestampselector>

Внутри моей родительской папки у меня есть следующие папки:

test      (Last modified on 07/04/2019 10:30 AM)
check     (Last modified on 08/04/2019 05:00 PM)
integrate (Last modified on 08/04/2019 12:30 PM)
slave     (Last modified on 09/04/2019 05:00 PM)

Наш скрипт должен принимать последние две измененные папки, что в приведенном выше случае должно быть встроить и подчинить .

Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Вообще говоря, это хорошая идея - избегать ant-contrib, когда это возможно.Эту конкретную проблему можно быстро решить с помощью собственных коллекций ресурсов Ant:

<last count="2" id="latest.two.files">
    <sort>
        <date />

        <fileset dir="MyDirectoryPath" />
    </sort>
</last>

Полный пример цели:

<target name="select-latest">
    <delete dir="testdir" />
    <mkdir dir="testdir" />

    <touch file="testdir/test" datetime="07/04/2019 10:30 AM" />
    <touch file="testdir/check" datetime="08/04/2019 05:00 PM" />
    <touch file="testdir/integrate" datetime="08/04/2019 12:30 PM" />
    <touch file="testdir/slave" datetime="09/04/2019 05:00 PM" />

    <last count="2" id="latest.two.files">
        <sort>
            <date />

            <fileset dir="testdir" />
        </sort>
    </last>

    <echo message="${toString:latest.two.files}" />
</target>
0 голосов
/ 08 мая 2019

Используемая вами задача является частью Ant-Contrib , а не базовой Ant.В документации сказано, что вы можете использовать атрибут count, чтобы указать, сколько элементов вы хотите выбрать.В вашем случае установите его равным двум:

<timestampselector property="latest.modified" count="2">
  <path>
    <dirset dir="MyDirectoryPath">
      <include name="*" />
    </dirset>
  </path>
</timestampselector>

Мне показалось, что это работает нормально: для свойства был задан список из двух каталогов, разделенных запятыми.

...