| NAnt  Help  Task Reference  <foreach> | v0.85 | 
Loops over a set of items.
Can loop over files in directory, lines in a file, etc.
The property value is stored before the loop is done, and restored when the loop is finished.
The property is returned to its normal value once it is used. Read-only parameters cannot be overridden in this loop.
| Attribute | Type | Description | Required | 
|---|---|---|---|
| item | LoopItem | The type of iteration that should be done. | True | 
| property | string | The NAnt property name(s) that should be used for the current iterated item. | True | 
| delim | string | The deliminator char. | False | 
| in | string | The source of the iteration. | False | 
| trim | LoopTrim | The type of whitespace trimming that should be done. The default is None. | False | 
| failonerror | bool | Determines if task failure stops the build, or is just reported. The default is true. | False | 
| if | bool | If true then the task will be executed; otherwise, skipped. The default is true. | False | 
| unless | bool | Opposite of if. If false then the task will be executed; otherwise, skipped. The default is false. | False | 
| verbose | bool | Determines whether the task should report detailed build log messages. The default is false. | False | 
in attribute, but supports more complicated things like a <fileset> and such. Note:  Please remove the in attribute if you are using this element. 
Executes embedded tasks in the order in which they are defined.
| Attribute | Type | Description | Required | 
|---|---|---|---|
| failonerror | bool | Determines if task failure stops the build, or is just reported. The default is true. | False | 
| if | bool | If true then the task will be executed; otherwise, skipped. The default is true. | False | 
| unless | bool | Opposite of if. If false then the task will be executed; otherwise, skipped. The default is false. | False | 
| verbose | bool | Determines whether the task should report detailed build log messages. The default is false. | False | 
Loops over the files in c:\.
<foreach item="File" in="c:\" property="filename">
    <echo message="${filename}" />
</foreach>
    
      Loops over all files in the project directory.
<foreach item="File" property="filename">
    <in>
        <items>
            <include name="**" />
        </items>
    </in>
    <do>
        <echo message="${filename}" />
    </do>
</foreach>
    
      Loops over the folders in c:\.
<foreach item="Folder" in="c:\" property="foldername">
    <echo message="${foldername}" />
</foreach>
    
      Loops over all folders in the project directory.
<foreach item="Folder" property="foldername">
    <in>
        <items>
            <include name="**" />
        </items>
    </in>
    <do>
        <echo message="${foldername}" />
    </do>
</foreach>
    
      Loops over a list.
<foreach item="String" in="1 2,3" delim=" ," property="count">
    <echo message="${count}" />
</foreach>
    
       Loops over lines in the file properties.csv, where each line is of the format name,value. 
<foreach item="Line" in="properties.csv" delim="," property="x,y">
    <echo message="Read pair ${x}=${y}" />
</foreach>