Ant Zip提取的父目录

时间:2010-12-13 15:14:54

标签: ant

我有几个zip文件需要在Ant目标中解压缩。所有zip文件都在同一目录中,并具有相同的内部目录和文件结构。

所以我使用以下代码片段解压缩目录中的所有zip文件,但每个zip文件在根目录下不包含父文件夹,因此每个连续的zip文件都被解压缩并覆盖以前的文件。

<unzip dest="C:/Program Files/Samsung/Samsung TV Apps SDK/Apps">            
    <fileset dir=".">
        <include name="**/*.zip"/>
    </fileset>
</unzip>

是否有更好的方法来解压缩一组文件,并创建一个目录以将其解压缩到基于zip文件名的目录?

所以,如果zip文件是:

1.zip
2.zip
3.zip

然后将每个内容提取到:

1/
2/
3/

由于

2 个答案:

答案 0 :(得分:4)

一种解决方案可能是使用ant-contrib'用于'和'propertyregex'任务来执行此操作:

<for param="my.zip">
  <fileset dir="." includes="**/*.zip" />
  <sequential>
    <propertyregex property="my.zip.dir"
              input="@{my.zip}"
              regexp="(.*)\..*"
              select="\1"
              override="yes" />
    <unzip src="@{my.zip}" dest="${my.zip.dir}" />
  </sequential>
</for>

'propertyregex'从zip文件名中删除.zip扩展名,以用作目标目录名。

答案 1 :(得分:-1)

没有ant-contrib: https://stackoverflow.com/a/12169523/957081

<!-- Get the path of the war file. I know the file name pattern in this case -->
<path id="warFilePath">
    <fileset dir="./tomcat/webapps/">
        <include name="myApp-*.war"/>
    </fileset>
</path>

<property name="warFile" refid="warFilePath" />

<!-- Get file name without extension -->
<basename property="warFilename" file="${warFile}" suffix=".war" />

<!-- Create directory with the same name as the war file name -->
<mkdir dir="./tomcat/webapps/${warFilename}" />

<!-- unzip war file -->
<unwar dest="./tomcat/webapps/${warFilename}">
    <fileset dir="./tomcat/webapps/">
        <include name="${warFilename}.war"/>    
    </fileset>
</unwar>