NAnt foreach循环文件夹递归

时间:2009-07-27 17:43:43

标签: loops nant

有人知道如何用NAnt创建递归循环吗?我需要循环遍历所有文件夹并将文件上传到我们的网络服务器。我正在使用这个NAnt ftp任务(http://www.spinthemoose.com/~ftptask),但它似乎没有上传整个目录。它仅在我的put元素中上传所提到的文件。

谢谢,

2 个答案:

答案 0 :(得分:12)

Foreach task。您可以找到循环文件夹的示例。

完整示例:

<foreach item="Folder" property="foldername">
    <in>
        <items>
            <include name="YOUR_FOLDER\**" />
        </items>
    </in>
    <do>
        <foreach item="File" property="filename" in="${foldername}">
        <do>
            <echo message="${filename}" />
        </do>
        </foreach>              
    </do>
</foreach>

如果您不需要文件夹,即使使用较少的代码也可以满足您的需求:

<foreach item="File" property="filename">
    <in>
        <items>
            <include name="YOUR_FOLDER\**" />
        </items>
    </in>
    <do>
        <echo message="${filename}" />
    </do>
</foreach>

答案 1 :(得分:2)

我相信这会给你递归的文件夹列表

<?xml version="1.0"?>

    

<target name="task.recursive">
    <foreach item="Folder" in="${folder.current}" property="folder">
        <echo message="${folder}" />
        <property name="folder.current" value="${folder}" />
        <call target="task.recursive" />
    </foreach>
</target>

<target name="task.run">
    <echo message="${project.folder.root}" level="Info" />
    <property name="folder.current" value="${project.folder.root}" />
    <call target="task.recursive" />
</target>