Я хочу использовать foreach NAnt для итерации файлов в папке, как форсировать алфавитную итерацию? - PullRequest
4 голосов
/ 24 февраля 2010

У меня есть задача NAnt «отправить», чтобы упаковать мои текущие сценарии .sql в сборку, затем назвать сборку с возрастающим int {######} и скопировать ее в папку сборки.

У меня есть еще одна задача NAnt, которая выполняет эти сценарии сборки.

Они должны выполнить по порядку, но в моей последней попытке они не были. Могу ли я "заставить" NAnt работать по алфавиту?

Ответы [ 3 ]

4 голосов
/ 18 марта 2010

СБОЙ:

<fileset basedir="source\tsql\builds\" id="buildfiles">
  <include name="*.sql.template.sql" /> 
  <exclude name="*.sql" /> 
  <exclude name="*asSentTo*" />
</fileset>
<foreach item="File" property"filename">
  <in refid="buildfiles">
    <echo message="${filename}" /> 
  </in>
</foreach>

PASS:

<foreach item="File" property="filename" in="source\tsql\builds"> 
  <do> 
    <if test="${string::ends-with(filename,'.sql.template.sql')}"> 
      <echo message="${filename}" /> 
    </if> 
  </do> 
</foreach>
1 голос
/ 19 октября 2016

Вот как вы делаете это с набором файлов

<fileset id="mySet">
  <include name="*.sql" />
</fileset>
<copy>  
  <fileset refid="mySet" />
</copy>
<foreach item="File" property="filename">
  <in>
    <items refid="mySet" />
  </in>
  <do>
    <echo message="Copied files: ${filename} to directory: ${Folder}." />
  </do>
</foreach>
1 голос
/ 28 февраля 2010

Чтобы удовлетворить свое любопытство, я попытался воспроизвести проблему с помощью этого сценария:

<?xml version="1.0"?>
<project name="foreach.test" default="foreach.alpha">
  <target name="foreach.alpha">
    <foreach item="File" in="C:\foo" property="filename">
      <do>
        <echo message="${filename}" />
      </do>
    </foreach>
  </target>
</project>

Имена файлов распечатываются в алфавитном порядке. Так что обычное использование foreach уже кажется решением проблемы.

...