我有一個NAnt任務「ship」將我當前的.sql腳本打包到構建中,然後使用遞增的int {######}命名構建並將其複製到構建文件夾。我想使用NAnt的foreach迭代文件夾中的文件,如何強制按字母順序迭代?
我有另一個執行這些構建腳本的NAnt任務。
他們必須按順序執行,但在我最後一次嘗試中,他們不是。我可以「強制」NAnt按字母順序工作嗎?
我有一個NAnt任務「ship」將我當前的.sql腳本打包到構建中,然後使用遞增的int {######}命名構建並將其複製到構建文件夾。我想使用NAnt的foreach迭代文件夾中的文件,如何強制按字母順序迭代?
我有另一個執行這些構建腳本的NAnt任務。
他們必須按順序執行,但在我最後一次嘗試中,他們不是。我可以「強制」NAnt按字母順序工作嗎?
失敗:
<fileset basedir="source\tsql\builds\" id="buildfiles">
<include name="*.sql.template.sql" />
<exclude name="*.sql" />
<exclude name="*asSentTo*" />
</fileset>
<foreach item="File" property"filename">
<in refid="buildfiles">
<echo message="${filename}" />
</in>
</foreach>
PASS:
<foreach item="File" property="filename" in="source\tsql\builds">
<do>
<if test="${string::ends-with(filename,'.sql.template.sql')}">
<echo message="${filename}" />
</if>
</do>
</foreach>
Duncan格式化XML或代碼,您需要在每行之前添加至少4個空格。你有2.我編輯來格式化它。您也可以選擇文本並使用代碼塊圖標(圖標上的零和零)。你可以點擊編輯看看我做了什麼。 – 2010-03-18 20:07:49
謝謝艾哈邁德! – Duncan 2010-03-26 15:36:47
爲了滿足我的好奇心我試圖用這個腳本來重現問題:
<?xml version="1.0"?>
<project name="foreach.test" default="foreach.alpha">
<target name="foreach.alpha">
<foreach item="File" in="C:\foo" property="filename">
<do>
<echo message="${filename}" />
</do>
</foreach>
</target>
</project>
的文件名以字母順序打印出來。因此,傳統使用foreach
似乎已經成爲解決問題的方法。
你是如何對你的XML進行美化的? – Duncan 2010-03-18 19:49:06
這裏是你如何與一個文件集
<fileset id="mySet">
<include name="*.sql" />
</fileset>
<copy>
<fileset refid="mySet" />
</copy>
<foreach item="File" property="filename">
<in>
<items refid="mySet" />
</in>
<do>
<echo message="Copied files: ${filename} to directory: ${Folder}." />
</do>
</foreach>
做到這一點,你可以請包括更多的細節和代碼段。我試圖循環遍歷目錄中的文件,顯然這些文件按字母順序迭代。 – 2010-02-24 18:07:24