我有一个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