2012-08-01 106 views
3

我现在有这个命令:合并文件 - 包括文件夹中的文件

copy /b *.txt newfile.txt 

但我想包括与文件夹中所有的文件。

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

即时通讯使用Windows,并希望命令运行或批处理文件,但有问题。

反正也有删除行吗? 有没有比我目前使用的更好的命令?

UPDATE:

<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> 

我现在用上面的代码,但不能得到它包含的文件夹

+0

[蚂蚁的concat将做级联的工作](https://ant.apache.org/manual/Tasks/concat.html) – oers 2012-08-01 13:25:23

+0

谢谢请参阅更新 – LmC 2012-08-01 13:30:31

+1

'includes =“**/*。js”'** /'部分是包含子文件夹的蚂蚁方式 – oers 2012-08-01 13:31:52

回答

7

由于oers在评论中指出中的文件时,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> 
+0

非常好的答案,如果我想排除诸如.min.js之类的文件,但允许.js我该怎么做? – LmC 2012-08-01 15:47:56

+0

有没有办法做到这一点,但在一定的顺序? – LmC 2012-08-01 16:03:50

+0

@LiamMcCann,查看更新后的答案,显示如何排除以* .min.js结尾的文件。 – 2012-08-01 16:36:24

相关问题