Ant Zip 提取的父目录

Ste*_*eve 4 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>
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来解压缩一组文件,并根据 zip 文件名创建一个目录来解压缩它们?

因此,如果 zip 文件是:

1.zip
2.zip
3.zip
Run Code Online (Sandbox Code Playgroud)

然后每个的内容将被提取到:

1/
2/
3/
Run Code Online (Sandbox Code Playgroud)

谢谢

mar*_*ton 5

一种解决方案可能是使用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>
Run Code Online (Sandbox Code Playgroud)

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