3

DOS バッチ ファイルを Ant に変換しています。dirバッチ ファイルの最後に、DOSコマンドを使用して、サイズ、日付、時刻を含む、コピーされたファイルの一覧を出力します。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>

上記を変更して、各ファイルをサイズ、日付、時刻とともに別々の行に印刷するにはどうすればよいですか?

4

2 に答える 2

3

AntFlakaと呼ばれる外部タスクスイートに基づくソリューションがあります。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
...
于 2011-05-13T13:17:10.240 に答える
2

I don't think that is available in any of the core Ant tasks.

You could write your own custom task to do this.

Alternatively, you could use the Apply task to execute a system command like dir for each file in a fileset. For example:

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

Following your comment below, you could check whether all your zip files were newer than some target file (which you could create before creation of the zips) using the Uptodate task.

于 2011-05-11T13:37:51.370 に答える