2011-04-29 43 views
2

其实我使用<move> cmd重命名一个文件夹而不是<rename> cmd。但在我的情况下,我在这里移动48746个文件,因此需要大约1个小时。请告诉我一个合适的方式来以最佳方式重命名该文件夹。提前致谢。重命名Vs移动Ant任务

<target name="rename_folder_jet" depends="Upload_on_ftp"> 
    <move todir="${build.dir}_jet_${ver_number}"> 
     <fileset dir="${build.dir}"> 
      <include name="**/*.*"/> 
     </fileset> 
    </move> 
</target> 

回答

7

尝试仅移动/重命名目录,而不是其所有内容。像这样:

<target name="rename_folder_jet" depends="Upload_on_ftp"> 
    <move file="${build.dir}" todir="${build.dir}_jet_${ver_number}"/> 
</target> 

并且在开始之前确保目标目录不存在。

我尝试用下面的生成文件:

<project default="rename_folder_jet"> 
    <property name="build.dir" value="build"/> 
    <property name="ver_number" value="0.3"/> 

    <target name="setup"> 
    <mkdir dir="${build.dir}"/> 
    <mkdir dir="${build.dir}/foo"/> 
    <mkdir dir="${build.dir}/bar"/> 
    </target> 

    <target name="teardown"> 
    <delete dir="${build.dir}_jet_${ver_number}"/> 
    </target> 

    <target name="rename_folder_jet"> 
    <move file="${build.dir}" todir="${build.dir}_jet_${ver_number}"/> 
    </target> 
</project> 

在调试(蚂蚁-d)执行Ant和上面很有趣。

案例1:

ant teardown 
ant setup 
ant -d 

在这种情况下,此举的目标目录/重命名不存在。蚂蚁的调试输出显示:

[move] Attempting to rename dir: C:\Users\sudocode\tmp\ant\build to C:\Users\sudocode\tmp\ant\build_jet_0.3\build 

情况2:

ant setup 
ant 
ant setup 
ant -d 

在这种情况下,目标目录已经存在于第二执行。蚂蚁的调试输出显示:

 [move] Attempting to rename dir: C:\Users\sudocode\tmp\ant\build to C:\Users\sudocode\tmp\ant\build_jet_0.3\build 
fileset: Setup scanner in dir C:\Users\sudocode\tmp\ant\build with patternSet{ includes: [] excludes: [] } 
    [move] Deleting directory C:\Users\sudocode\tmp\ant\build\foo 
    [move] Deleting directory C:\Users\sudocode\tmp\ant\build\bar 
    [move] Deleting directory C:\Users\sudocode\tmp\ant\build 

如此看来,如果目标目录不存在,蚂蚁会做重命名的目录。但是,如果目标目录存在,它将复制到目录中,而不是从源目录中删除。

+0

非常感谢sudocode – picnic4u 2011-04-29 09:43:25

+0

对我来说,这是在指定的todir目录内移动整个目录,即使目录不存在。我通过使用tofile而不是todir来修复 – Josejulio 2017-04-05 16:29:21