如何使用Ant重命名文件夹?

13
我想用时间戳重命名我的应用程序文件夹,然后使用相同的文件夹名称解压缩一个更新版本的应用程序。使用 Ant 的 (move 任务),看起来可以将一个文件夹中的内容移动到另一个文件夹中。
这是在 Ant 中唯一的方法吗?
4个回答

24

移动任务确实可以达到你想要的效果,但是命名有点令人困惑。如果你将你的目录视为Java意义上的“文件”——文件是指可以表示文件系统中的目录或通常意义下的文件的文件系统句柄——那么移动任务就有意义了。

因此,以下代码:

<move file="mySourceDirName" tofile="myTargetDirName"/>

意味着将目录mySourceDirName重命名/移动为myTargetDirName

接下来的操作就是:

<move file="mySourceDirName" todir="someExistingDir"/>

把目录mySourceDirName移动到现有目录someExistingDir下面成为其子目录。

因此,在Ant中,“file”属性指的是目标对象,“todir”属性指的是目标文件或目录的新父目录。


5

我来解释一下已经给出的答案,这个答案是正确的...

<project default="move">
    <tstamp/>
    <target name="move">
        <move file="foo" tofile="foo-${TSTAMP}"/>
    </target>
</project>

这将foo移动到foo-HHMM。

例如:

$ find .
.
./build.xml
./foo
./foo/bar.txt
$
$ ant
Buildfile: C:\tmp\ant\build.xml

move:

BUILD SUCCESSFUL
Total time: 0 seconds
$
$ find .
.
./build.xml
./foo-1145
./foo-1145/bar.txt
$

我尝试了tofile和todir,但都不起作用。它抱怨说找不到“foo”——它存在,但是是一个目录。 - Daniel Earwicker
对我来说可以。foo是否与build.xml在同一个目录下? - ewan.chalmers

1

如果您想重命名文件夹,可以使用移动标签,但有一种晦涩的方法可供使用。如@phasmal所说,您可以使用移动,但它会将文件夹移动到所需文件夹内部。如果您只想重命名,请尝试以下操作。

<move todir="newname">
   <fileset dir="directory tobe renamed "/>
</move>

0

我认为移动任务是你想要的。有什么原因你不想使用它吗?

听起来你正在建议移动包含build.xml文件的文件夹。是这样吗?如果是,我想ant可能不会很高兴。


1
现在在我的build.xml文件中,我已经设置它删除文件夹,然后解压缩一个zip文件,该文件会自动创建一个具有相同文件夹名称的新文件夹。现在,我想将其重命名为附加了时间戳的文件夹名称,而不是删除文件夹。 - JLau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接