2012-08-01 99 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

相關問題