Эхо каждого файла в наборе файлов с размером, датой и временем - PullRequest
3 голосов
/ 11 мая 2011

Я конвертирую пакетный файл DOS в Ant. В конце командного файла я распечатываю список скопированных файлов, включая размер, дату и время, используя команду DOS dir. Я хотел бы сделать то же самое в конце сценария Ant. Пока у меня есть:

<!-- LIST COPIED FILES -->
<target name="summary" depends="backup">
    <fileset id="zipfiles" dir="${dest}" casesensitive="yes">
        <include name="*.zip"/>
    </fileset>  

    <property name="prop.zipfiles" refid="zipfiles"/>
    <echo>${prop.zipfiles}</echo>       
</target>

Как изменить вышеперечисленное для печати каждого файла в отдельной строке с указанием размера, даты и времени?

Ответы [ 2 ]

3 голосов
/ 13 мая 2011

Существует решение на основе внешнего пакета Tasksuite под названием Ant Flaka . С помощью Ant Flaka вы получаете доступ к базовым файловым объектам и их свойствам (name, mtime, size ..) из вашего набора файлов. нет необходимости открывать внешний процесс через apply / cmd

<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka">
    <fl:install-property-handler />

    <!-- as fileset has no absolute pathnames we need
         path combined with pathconvert -->
    <path id="foobar">
        <fileset dir="/home/gilreb/Downloads">
            <include name="*.zip"/>
        </fileset>
    </path>

    <pathconvert property="zipfiles" refid="foobar"/>

    <!-- iterate over the listentries, get access to
         the underlying fileobject and echo its properties -->
    <fl:for var="f" in="split('${zipfiles}', ':')">
        <echo>
      #{  format('filename %s, last modified %tD, size %s bytes', f.tofile.toabs,f.tofile.mtime,f.tofile.size)  }
     </echo>
    </fl:for>

</project>

вывод =

...  
   [echo]       filename /some/path/apache-ant-1.8.2-bin.zip, last modified 03/16/11, size 10920710 bytes
     [echo]      
     [echo]       filename /some/path/apache-ant-1.8.2-src.zip, last modified 03/16/11, size 8803388 bytes
     [echo]      
     [echo]       filename /some/path/apache-ant-antunit-1.1-bin.zip, last modified 04/17/11, size 70477 bytes
...
2 голосов
/ 11 мая 2011

Не думаю, что это доступно ни в одной из основных задач Ant.

Вы можете написать собственное задание для этого.

В качестве альтернативы вы можете использовать задачу Применить для выполнения системной команды, например dir, для каждого файла в наборе файлов. Например:

<apply executable="cmd" osfamily="windows">
<arg value="/c"/>
<arg value="dir"/>
<fileset dir=".">
  <include name="*.zip"/>
</fileset>
</apply>

Следуя приведенному ниже комментарию, вы можете проверить, были ли все ваши zip-файлы более новыми, чем какой-либо целевой файл (который вы могли создать до создания zip-файлов), с помощью задачи Uptodate .

...