如何将每个文件分别压缩而不是放在一个存档中?

  • 本文关键字:一个 文件 压缩 ant
  • 更新时间 :
  • 英文 :


我有3个文件(例如:m1.txt, m2.txt和m3.txt)在我的/tmp/文件夹。如何将每个文件压缩为m1.zip、m2.zip和m3.zip?

我使用了下面的代码,但是不起作用:

<target name="xzipit">
   <foreach target="zipone" param="Files"> 
      <path> 
         <fileset dir="/tmp/" excludes="*.zip"  
                  includes="*.txt" casesensitive="no" />
      </path>
   </foreach>
</target>
<target name="zipone">
   <zip destfile="${Files}" basedir="/tmp/">
   </zip>
</target>

注意fileset idrefid用法的使用,以及在为zip ant任务指定 inclesfile

    <fileset dir="/tmp" excludes="*.zip"  includes="*.txt" id="zip.fileset.id" casesensitive="no" />
    <pathconvert property="zipFileSetProp" refid="zip.fileset.id">
        <mapper>
            <flattenmapper/>
        </mapper>
    </pathconvert>
    <for list="${zipFileSetProp}" param="fileToZip" delimiter=";">
        <sequential>
            <echo>fileToZip @{fileToZip}</echo>
            <zip destfile="/tmp/@{fileToZip}.zip" basedir="/tmp/" includesfile="/tmp/@{fileToZip}"/>
        </sequential>
    </for>

我还有一个答案。

<project name="texzip" basedir="." default="zipit">
   <taskdef resource="net/sf/antcontrib/antcontrib.properties">
     <classpath>
       <pathelement location="/tmp/ant-contrib-1.0b3.jar"/>
     </classpath>
   </taskdef>
   <target name="zipit">
     <foreach target="zipone" param="Files">
       <path>
         <fileset dir="/tmp/" excludes="*.zip" includes="*.txt" casesensitive="no" />
       </path>
     </foreach>
   </target>
   <target name="zipone">
     <basename property="basename" file="${Files}" suffix="txt"/>
       <zip destfile="${basename}.zip">
       <zipfileset dir="." includes="${basename}.txt"/>
       </zip>
   </target>
</project>

相关内容

  • 没有找到相关文章

最新更新