如何使用Ant重命名文件和文件夹
如何使用Ant重命名许多文件和文件夹?对于我知道的文件,我可以这样做 如何对文件夹执行相同的操作 例如。 文件夹集(输入) 输出:如何使用Ant重命名文件和文件夹,ant,Ant,如何使用Ant重命名许多文件和文件夹?对于我知道的文件,我可以这样做 如何对文件夹执行相同的操作 例如。 文件夹集(输入) 输出: com.google.appengine.eclipse.sdkbundle_1.5.2 com.google.gdt.eclipse.designer.doc.user_2.3.2 com.google.gdt.eclipse.designer.hosted.2_0.webkit_win32_2.3.2 org.eclipse.acceleo.common_3.1
com.google.appengine.eclipse.sdkbundle_1.5.2
com.google.gdt.eclipse.designer.doc.user_2.3.2
com.google.gdt.eclipse.designer.hosted.2_0.webkit_win32_2.3.2
org.eclipse.acceleo.common_3.1.0.jar
这将移动目录及其所有子目录和文件
<move todir="${toDir}">
<fileset dir="${fromDir}"/>
</move>
看一看。一个是
任务。这将允许您指定多个目录、目录模式等。通过这种方式,您可以循环浏览目录和文件
<move todir="${toDir}">
<fileset dir="${fromDir}"/>
</move>
您可以将文件和目录复制到其他位置,并使用映射文件名。(
任务也将与映射器一起工作。)
我建议您将下载到项目中的目录${basedir}/antlib/ac
。然后在生成文件的开头执行此操作:
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<fileset dir="${basedir}/antilb/ac"/>
</classdef>
<taskdef>
这将定义ant contrib任务并允许您使用它们。如果您使用的是版本控制系统并签入所有内容,则有人可以签出您的项目并进行构建,而无需先安装Ant Contrib。对于复杂的操作,我使用 以下示例将使用正则表达式重命名文件和目录:
<project name="demo" default="rename">
<target name="bootstrap">
<mkdir dir="${user.home}/.ant/lib"/>
<get dest="${user.home}/.ant/lib/groovy-all.jar" src="http://search.maven.org/remotecontent?filepath=org/codehaus/groovy/groovy-all/2.0.6/groovy-all-2.0.6.jar"/>
</target>
<target name="rename">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/>
<fileset id="filesToBeRenamed" dir="build"/>
<dirset id="dirsToBeRenamed" dir="build"/>
<groovy>
project.references.filesToBeRenamed.each {
String origName = it
String newName = origName.replaceAll(/_[0-9\.]+[a-z0-9\-]+/, "")
if (origName != newName) {
ant.move(file:origName, tofile:newName, verbose:"true")
}
}
project.references.dirsToBeRenamed.each {
String origName = it
String newName = origName.replaceAll(/_[0-9\.]+[a-z0-9\-]+/, "")
if (origName != newName) {
ant.move(file:origName, tofile:newName, verbose:"true")
}
}
</groovy>
</target>
</project>
project.references.filestobernamed.each{
字符串origName=it
字符串newName=origName.replaceAll(/u[0-9\.]+[a-z0-9\-]+/,“”)
if(origName!=newName){
move(文件:origName,tofile:newName,详细:“true”)
}
}
project.references.dirsToBeRenamed.each{
字符串origName=it
字符串newName=origName.replaceAll(/u[0-9\.]+[a-z0-9\-]+/,“”)
if(origName!=newName){
move(文件:origName,tofile:newName,详细:“true”)
}
}
注:
- “引导”目标只需要运行一次。它将从Maven central下载groovy jar
macrodef
中,以便目标看起来干净,具有个人想法。@coolcfan无参数。对于我自己的构建,我更进一步,将我的macrodef打包在antlibs中,并使用ivy下载。这种方法使我能够控制ANT扩展的版本。见: