gpt4 book ai didi

ant - 使用 Ant 提取嵌套的 zip 存档

转载 作者:行者123 更新时间:2023-12-04 21:40:27 28 4
gpt4 key购买 nike

我需要处理一个 zip 存档,它本身包含 zip 存档,它们都遵循相同的结构:

main.zip/
foo-1.txt
foo-1.zip/
...
tests/
...
bar-1.txt
bar-1.zip/
...
tests/
...
bar-2.txt
bar-2.zip/
...
tests/
...
foobar-1.txt
foobar-1.zip/
...
tests/
...

我想将 txt 文件和 tests 目录提取到这样的结构中:

 foo/
1/
submission.txt
tests/
bar/
1/
submission.txt
tests/
2/
submission.txt
tests/
foobar/
1/
submission.txt
tests/

我设法将目录结构和文本文件放在正确的位置:

<target name="extract submissions">
<copy todir="${basedir}">
<zipfileset refid="submissions.zip"/>
<mapper type="regexp" from="(.*)-(.*)\.txt" to="\1/\2/\submission.txt"/>
</copy>
</target>

但现在我不知道如何访问内部 zips 中的测试目录。我尝试了一个中间步骤,将内部 zipper 复制到测试目录应该结束的地方。但是,如何在不知道确切路径的情况下访问 zip 存档的内容?

最佳答案

我终于找到了一个纯 Ant 解决方案:

<target name="extract submissions">
<copy todir="${basedir}">
<zipfileset refid="submissions.zip"/>
<mapper type="regexp" from="(.*)-(.*)\.txt" to="\1/\2/\submission.txt"/>
</copy>

<subant genericantfile="${basedir}/build.xml" target="extract submission">
<dirset dir="${basedir}" includes="*/*"/>
</subant>
</target>

<target name="extract submission">
<copy todir="tests">
<zipfileset refid="submission.zip"/>
<mapper type="regexp" from="tests/(.*)" to="\1"/>
</copy>
</target>

第一个目标提取外部 zip 文件并在每个提取的目录上调用第二个目标。这是通过一个subant实现的。然后第二个目标解压缩一个内部 zip 文件。由于它应用于任何子目录,因此所有内部 zip 都被提取。

关于ant - 使用 Ant 提取嵌套的 zip 存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12756028/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com