【问题标题】:Ant Zip Extracted Parent DirectoryAnt Zip 提取的父目录
【发布时间】:2012-08-29 08:59:06
【问题描述】:

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

所以我使用下面的sn-p来解压目录下的所有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/

谢谢

【问题讨论】:

    标签: ant


    【解决方案1】:

    一种解决方案可能是使用ant-contrib 'for' 和 '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 扩展名,以用作目标目录名。

    【讨论】:

    • 是的,这就是我最终的结果。我希望不必使用 ant-contrib,但在这种情况下,它可能是最直接的方法。
    【解决方案2】:

    没有 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>
    

    【讨论】:

    • 此解决方案仅适用于 warFilePath 正好引用 1 个文件。 OP 询问如何提取多个文件。
    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多