1

私がこのようなディレクトリ構造を持っているとしましょう:

  • 動物/犬/詳細
  • 動物/猫/詳細
  • 動物/カエル/詳細
  • 動物/馬/詳細

animalsantを使用して、呼び出さdetailsれたすべてのサブディレクトリの名前をに変更したいと思いnewます。したがって、結果は次のようになります。

  • 動物/犬/新品
  • 動物/猫/新品
  • 動物/カエル/新品
  • 動物/馬/新品

私はこのようなことを試しました:

    <move tofile="new">
        <path id="directories.to.rename">
            <dirset dir="animals">
                <include name="**/details"/>
            </dirset>
        </path>
    </move>

しかし、このエラーが発生します:

Cannot concatenate multiple files into a single file.
4

2 に答える 2

3

マッパーを使用して、記述した名前変更を実行できます。例えば:

<move todir="animals">
    <dirset dir="animals" includes="**/details" />
    <globmapper from="*/details" to="*/new"/>
</move>

move(タスクドキュメントの最後に同様の例があります。)

移動タスク(tofile)の単一ファイルモードと複数ファイルモードを混在させたために、発生したエラーが発生しました。タスクはを含むファイルベースのリソースコレクションを受け入れるため、dirsetをネストする必要はありません。pathmovedirset

于 2012-05-09T07:46:40.260 に答える
1

Ant-Contribforタスクとタスクを使用しpropertyregexます。

<target name="test">
  <for param="detailsDir">
    <dirset dir="animals">
      <include name="**/details"/>
    </dirset>
    <sequential>
      <propertyregex property="output.dir" input="@{detailsDir}" regexp="(.*)/details" replace="\1" />
      <move file="@{detailsDir}" toFile="${output.dir}/new" />
    </sequential>
  </for>
</target>
于 2012-05-09T01:48:14.940 に答える