连接文件 - 包括文件夹中的文件

时间:2012-08-01 13:21:35

标签: file ant command-line batch-file concatenation

我目前有这个命令:

copy /b *.txt newfile.txt

但我想包含所有带文件夹的文件。

我该怎么做?是否可以将此添加到Apache Ant? 我也考虑这样做来缩小JS文件。

我正在使用Windows,并希望运行命令或批处理文件但有问题。

还有删除行吗? 是否有比我目前使用的更好的命令?

更新:

<target name="concatenate" description="Concatenate all js files">
    <concat destfile="build/application.js">
        <fileset dir="js" includes="*.js" />
    </concat>
</target>
<target name="compress" depends="concatenate" description="Compress application.js to application-min.js">
    <apply executable="java" parallel="false">
        <filelist dir="build" files="application.js" />
        <arg line="-jar" />
        <arg path="C:\yuicompressor-2.4.7\build\yuicompressor-2.4.7.jar" />
        <srcfile />
        <arg line="-o" />
        <mapper type="glob" from="*.js" to="build/*-min.js" />
        <targetfile />
    </apply>

现在我正在使用上面的代码,但无法将其包含在文件夹

1 个答案:

答案 0 :(得分:7)

在注释中指出oers,Ant模式使用**递归匹配目录。以下是Ant手册中的相关Patterns部分:

  

为了使事情更加灵活,我们添加了一个额外的功能,可以匹配多个目录级别。这可用于匹配目录树中任何位置的完整目录树或文件。为此,必须将**用作目录的名称。当**用作模式中目录的名称时,它匹配零个或多个目录。例如:/test/**匹配/test/,下的所有文件/目录,例如/test/x.java,/test/foo/bar/xyz.html,,但不匹配/xyz.xml

     

有一个“速记”:如果某个模式以/\结尾,则会附加**。例如,mypackage/test/被解释为mypackage/test/**

上面的“连接”目标是:

<target name="concatenate" description="Concatenate all js files">
  <concat destfile="build/application.js">
    <fileset dir="js" includes="**/*.js" excludes="**/*.min.js" />
  </concat>
</target>