我有一个zip文件,里面有一个基本文件夹,里面有其他内容。在解压缩之前,我并不总是知道要调用哪个基本文件夹。
我想移动那个基础文件夹,并在蚂蚁中同时重命名它 - 但似乎无法找出方法。我已经编写了代码来将zip文件的内容提取到${local.sdk.dir}/temp/
但是从这里我无法弄清楚如何重命名/移动提取的文件夹
<move todir="${local.sdk.dir}/${remote.sdk.file.name}">
<fileset dir="${local.sdk.dir}/temp/<WHAT_DO_I_PUT_HERE?>"></fileset>
</move>
也尝试了
<move todir="${local.sdk.dir}/${remote.sdk.file.name}" includeEmptyDirs="yes" verbose="true">
<fileset dir="${local.sdk.dir}/temp/" >
<include name="**/*" />
</fileset>
</move>
并且玩了这个,但最接近的我可以得到没有蚂蚁抛出错误是复制临时目录的内容,而不是temp中的基本文件夹。
答案 0 :(得分:2)
您可以一步完成所有这些操作 - 从zip文件复制并在复制时重命名更改目录名称的文件。 copy
task接受嵌套resource collection,因此您可以使用zipfileset
指定要直接从zip文件中复制的文件。
为了在复制文件时重命名文件,您可以使用mapper copy
任务也作为嵌套元素。在这种情况下,cutsdirmapper
看起来像是工作的工具。
所以,如果我已经理解了你想要做的事情,那么这样的事情应该有效:
<copy todir="${local.sdk.dir}/${remote.sdk.file.name}">
<zipfileset src="${your.zip.file}" />
<cutdirsmapper dirs="1" />
</copy>
cutdirsmapper
仅在Ant 1.8.2之后可用,因此如果您使用的是早期版本,则可以尝试使用regexpmapper
:
<regexpmapper from="[^/]*(.*)" to="\1" />
答案 1 :(得分:0)
<target name="relocate_sdk_folder">
<path id="sdk_folder_name">
<dirset dir="${local.sdk.dir}/temp/">
<include name="*"/>
</dirset>
</path>
<property name="sdk_folder_name" refid="sdk_folder_name" />
<echo message="renaming ${sdk_folder_name} to ${remote.sdk.file.name}" />
<move file="${sdk_folder_name}" tofile="${local.sdk.dir}/${remote.sdk.file.name}" />
</target>