2011-05-10 74 views
2

我需要將dir中包含的所有文件替換爲其他文件中存在的所有文件。NAnt:如何從其他目錄中替換一組文件

這將是該任務的僞代碼:

foreach (string file in /foo/var) 
    { 
    srcFile = "/other/dir/" + GetFileName(file); 
    Copy(srcFile, file); 
    } 

我需要更換,如果只存在於兩個/foo/var/other/dir文件。還有/foo/var中存在的文件,/other/dir中不存在,反之亦然。

NAnt最好的方法是什麼?

回答

2

這應該做的工作。它只會查看根目標目錄中的文件並忽略子文件夾。這將需要更多的工作,如果你想讓它包括子文件夾中

<project name="Sync" default="sync" xmlns="http://nant.sf.net/release/0.85/nant.xsd"> 

    <property name="source.path" value="D:\test\source\" /> 
    <property name="target.path" value="D:\test\target\" /> 

    <target name="sync" description="Copies only the matching files to a folder"> 
    <foreach item="File" property="targetFile"> 
     <in> 
     <items basedir="${target.path}"> <!-- include all files from the target path --> 
      <include name="*" /> <!-- this will not include subfolders --> 
     </items> 
     </in> 
     <do> 
     <if test="${file::exists(source.path + path::get-file-name(targetFile))}"> 
      <copy 
       file="${source.path + path::get-file-name(targetFile)}" 
       tofile="${targetFile}" 
       overwrite="true" 
       /> 
     </if> 
     </do> 
    </foreach> 
    </target> 
</project> 

我與南特0.86

測試它的文件
相關問題