как я могу скопировать один файл в несколько подкаталогов - PullRequest
2 голосов
/ 12 апреля 2011

Я пытаюсь использовать Nant, потому что я думал, что это будет проще всего, но я открыт для любого решения, которое работает на Windows XP.

У меня следующая структура папок

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

folder1 - папка N имеет ту же структуру каталогов, что и папка2. Я хочу скопировать файл в папку выпуска в каждой папке 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 в каждую папку N каталога. Что я делаю неправильно? Есть ли лучший способ сделать это?

1 Ответ

2 голосов
/ 12 апреля 2011

Я понял это.Мне пришлось изменить свой 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>   
...