【问题标题】:I want to use NAnt's foreach to iterate files in a folder, how to force alphabetic iteration?我想使用 NAnt 的 foreach 来迭代文件夹中的文件,如何强制字母迭代?
【发布时间】:2010-02-24 17:26:15
【问题描述】:

我有一个 NAnt 任务“ship”将我当前的 .sql 脚本打包到构建中,然后使用递增的 int {######} 命名构建并将其复制到构建文件夹。

我有另一个执行这些构建脚本的 NAnt 任务。

它们必须按顺序执行,但在我最后一次尝试中,它们不是。我可以“强制”NAnt 按字母顺序工作吗?

【问题讨论】:

  • 能否请您提供更多详细信息和代码 sn-p。我尝试遍历目录中的文件,显然这些文件是按字母顺序迭代的。

标签: build nant foreach sql-order-by


【解决方案1】:

失败:

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

通过:

<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 来格式化您需要在每行之前添加至少 4 个空格的 XML 或代码。你有 2 个。我编辑了它的格式。您还可以选择文本并使用代码块图标(图标上的 1 和 0)。你可以点击编辑看看我做了什么。
  • 这个语法对我不起作用:&lt;in refid="buildfiles"&gt; nant 0.92 出错:Unexpected attribute "refid" on element &lt;in&gt;
  • 这都八岁了,我要生锈了!您是否已经定义了“构建文件”?
【解决方案2】:

为了满足我的好奇心,我尝试用这个脚本重现问题:

<?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 的?
【解决方案3】:

以下是使用文件集的方法

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-23
    • 2013-11-25
    • 2015-12-07
    • 1970-01-01
    • 2011-02-14
    • 2021-12-13
    • 1970-01-01
    • 2017-04-12
    相关资源
    最近更新 更多