2009-07-27 10 views
4

NAntで再帰的ループを作成する方法を知っている人はいますか?私はすべての私のフォルダをループし、私たちのウェブサーバにファイルをアップロードする必要があります。私はこのNAnt ftpタスク(http://www.spinthemoose.com/~ftptask)を使用していますが、ディレクトリ全体をアップロードしていないようです。 put要素に上記のファイルのみをアップロードします。NAnt foreachループフォルダ再帰

おかげで、

答えて

12

Foreach task。フォルダをループする例があります。

全例:私はこれはあなたのフォルダの再帰的なリストを与えるべきであると信じて

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

私はすでにそれをチェックしますが、再帰的にそれを行うには例がありません。 – vikasde

+0

例iv.プロジェクトディレクトリ内のすべてのフォルダを上書きします。これはあなたが必要とするものです。 –

+0

これはNAntのデフォルトフォルダで動作するようですが、もし私がそれをに変更すると、再帰フォルダは表示されません。何か案は? – vikasde

1

:フォルダを必要としない場合は

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

、あなたも少ないコードであなたのニーズを達成することができます

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