2011-05-11 23 views
3

我正在將DOS批處理文件轉換爲Ant。在批處理文件的末尾,我使用DOS dir命令打印出複製的文件列表,包括大小,日期和時間。我想在Ant腳本的末尾也做同樣的事情。到目前爲止,我有:使用大小,日期和時間回覆Fileset中的每個文件

<!-- 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> 

如何修改上述打印每個文件的大小,日期和時間單獨的行?

回答

3

有一種基於外部Tasksuite的解決方案,稱爲Ant Flaka。 使用Ant Flaka,您可以訪問文件集中的基礎文件對象及其屬性(名稱,mtime,大小..)。無需通過打開外部過程中應用/ 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 
... 
+0

謝謝!我掉進了這個罐子裏,對EL做了一些小修改,而且它工作正常。 Flaka是Ant非常需要的補充。 – 2011-05-14 11:32:45

2

我不認爲這在任何核心Ant任務中都可用。

您可以編寫自己的自定義任務來執行此操作。

或者,您可以使用Apply任務爲文件集中的每個文件執行像dir這樣的系統命令。例如:

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

按照下面的評論,你可以檢查所有的zip文件是否比一些目標文件(你可以創建拉鍊之前創建)新的使用Uptodate任務。

+1

我很驚訝,這種外部的任務是不是已經在那裏。當然,我不是第一個需要這個......的人? – 2011-05-11 14:54:09

+0

不要拍攝信使;) – sudocode 2011-05-11 15:11:25

+0

我可以照你說的做,並讓Ant調用DOS的'dir'命令。我希望將文件的日期/時間寫入Ant屬性,以便我可以在之前和之後進行比較,如果它們沒有更改,請執行警報等。 – 2011-05-11 17:02:13

相關問題