如何将一个文件复制到多个子目录

时间:2011-04-12 13:39:34

标签: nant

我正在尝试使用nant,因为我认为这将是最简单的,但我对任何适用于Windows XP的解决方案持开放态度。

我有以下文件夹结构

basefolder
    folder1
    folder2
        subfolder1
            code
                solutionname1
                     projectname.interface
                     projectname.simulation
                     projectname.testcase
                         bin
                             release
    folder3
    ...
    folderN

folder1 - folderN都具有与folder2相同的目录结构。我想将文件复制到每个文件夹N的发布文件夹中。

我目前有以下nant脚本

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://nant.sf.net/release/0.90/nant.xsd" name="CopyDll" default="FileCopy">
  <property name="fileToCopy"
            value="C:\file.dll"
            overwrite="false"/>
  <property name="baseDirectory" value="${directory::get-current-directory()}" overwrite="false"/>
  <target name="FileCopy"
          description="Copies file to multiple directories">
    <foreach item="Folder"
             in="${baseDirectory}"
             property="foldername">
      <in>
        <items>
          <include name="**\**\**\*.TestCase\bin\Release"/>
        </items>
      </in>
      <do>
        <copy file="${fileToCopy}"
              todir="${foldername}"/>
        <echo message="Copied file to ${foldername}"/>
      </do>
    </foreach>   
  </target>
</project>

将file.dll复制到每个folderN目录。 我究竟做错了什么? 有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

我明白了。我不得不改变我的foreach看起来像这样

    <foreach item="Folder"
             property="foldername">
      <in>
        <items>
          <include name="${baseDirectory}\**\*.TestCase\bin\Release"/>
        </items>
      </in>
      <do>
        <copy file="${fileToCopy}"
              todir="${foldername}"/>
        <echo message="Copied file to ${foldername}"/>
      </do>
    </foreach>