Ant:读取文件名,根据文件名创建文件夹,将文件移动到文件夹中



使用Ant任务,我想读取目录中的所有文件名,并将每个文件复制到一个文件夹中,文件夹名称与文件名称相同,但没有扩展名。

开始

:

converted/aa_aa.dita
converted/bb_bb.dita
converted/cc_cc.dita

并以:

结尾
aa_aa/aa_aa.dita
bb_bb/bb_bb.dita
cc_cc/cc_cc.dita

等等

到目前为止,我已经得到了这个,它读取文件名及其路径并将它们放入.txt文件中:
<target name="move_dita_to_folder">
  <pathconvert pathsep=","
    property="my.files">
   <path>
     <fileset dir=".">
       <include name="*.dita"/>
     </fileset>
   </path>
 </pathconvert>
<echo file="my.files.txt" append="true">
my.files=${my.files}</echo>

这将使一个文件包含完整路径中包含的文件名,以逗号分隔。

更新:

现在我从txt文件中提取文件名并重写txt文件,将每个文件名放在新行中:

   <replaceregexp byline="false" flags="gis">
     <regexp pattern="(C:)(.*?)converted\(.*?).dita"/>
     <substitution expression="${line.separator}3"/>
     <fileset dir=".">
     <include name="**/*.txt"/>
     </fileset>
   </replaceregexp> 

结果是:

    my files=
aa_aa
bb_bb
cc_cc

所以现在我需要使用这些来创建文件夹名称,并将文件复制到适当的文件夹中。

我看到了这篇关于使用regex和mapper的文章,然而这似乎是一个更好的方法——但是我无法复制那里所描述的。

您可以使用内置(自Java 1.6.0_06起)javascript引擎的嵌套scriptmapper:

<copy todir="..." verbose="true">
 <fileset dir="..." includes="**/*.dita"/>
 <scriptmapper language="javascript">
  self.addMappedName(source.replace(source.split('.')[0], source.split('.')[0] + "/" + source.split('.')[0]));
 </scriptmapper>
</copy>

相关内容

  • 没有找到相关文章

最新更新