Многократное переименование с использованием ant-скрипта - PullRequest
0 голосов
/ 07 марта 2011

Позвольте мне объяснить сценарий:

D:\project\src\one.txt
D:\project\src\two.txt
D:\project\src\three.txt
D:\project\src\four.txt

Указанные выше файлы должны быть скопированы как:

D:\project\dst\one.xls
D:\project\dst\two.xls
D:\project\dst\three.xls
D:\project\dst\four.xls

Мне нужно изменить расширение, не используя маппер и задачу перемещения. Мне нужно переименовать, как указано выше, используя цикл for с функцией fte:filecopy внутри. Это возможно ???

Ответы [ 3 ]

6 голосов
/ 10 марта 2011

Для тех, кто прибывает сюда без отрицательного требования, касающегося ОП, гораздо более простой ответ - использовать картограф.

<project default="move_files">
  <target name="move_files">
    <copy todir="dst">
      <fileset dir="src">
        <include name="*.txt"/>
      </fileset>
      <globmapper from="*.txt" to="*.xls"/>
    </copy>
  </target>
</project>
1 голос
/ 07 марта 2011

Это работает для меня:

<?xml version="1.0"?>
<project name="so-copy-rename" default="build2">

    <property name="ant-contrib-jar" value="${user.home}/.ant/lib/ant-contrib-1.0b3.jar"/>

    <target name="setup" unless="ant-contrib.present">
        <echo>Getting ant-contrib</echo>
        <mkdir dir="${user.home}/.ant/lib"/>
        <!--
            Note: change this to a locally hosted maven repository manager such as nexus http://nexus.sonatype.org/
        -->
        <get dest="${ant-contrib-jar}"
             src="http://repo1.maven.org/maven2/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar"/>  
    </target>

    <target name="taskdefs">
        <taskdef resource="net/sf/antcontrib/antlib.xml">
            <classpath>
                <pathelement location="${ant-contrib-jar}"/>
            </classpath>
        </taskdef>
    </target>

    <target name="build" depends="taskdefs">

        <property name="srcdir" value="src"/>
        <property name="targetdir" value="target"/>
        <property name="files" value="file1,file2,file3,file4"/>

        <mkdir dir="${targetdir}"/>

        <foreach list="${files}" target="copy-rename" param="srcfile" trim="true">

            <param name="srcdir" value="${srcdir}" />
            <param name="targetdir" value="${targetdir}" />

        </foreach>

    </target>

    <target name="copy-rename">

        <var name="src-suffix" value="txt"/>
        <var name="tgt-suffix" value="xls"/>

        <copy file="${srcdir}/${srcfile}.${src-suffix}" tofile="${targetdir}/${srcfile}.${tgt-suffix}" />

    </target>

<target name="build2" depends="taskdefs">

    <property name="srcdir" value="src"/>
    <property name="targetdir" value="target"/>

    <mkdir dir="${targetdir}"/>

    <foreach target="copy-rename2" param="srcfile">
        <path id="srcfilepath">
            <fileset dir="${srcdir}" casesensitive="yes">
                <include name="*.txt"/>
            </fileset>
        </path>

        <param name="targetdir" value="${targetdir}" />
    </foreach>


</target>

<target name="copy-rename2">

    <var name="basefile" value="" unset="true"/>
    <basename property="basefile" file="${srcfile}" suffix=".txt"/>

    <var name="tgt-suffix" value="xls"/>

    <copy file="${srcfile}" tofile="${targetdir}/${basefile}.${tgt-suffix}" />

</target>

</project>
0 голосов
/ 09 марта 2011

Можете ли вы нарезать его другим способом и выполнить переименование внутри команды fte:filecopy? Взглянув на документацию IBM , вы можете указать задачи, которые должны выполняться на агентах источника или назначения, до или после копирования, используя presrc, postdst и т. Д. Это задача может быть задача Ant, которая делает переименование?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...