You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Lars Monsees <l....@atlantisgmbh.de> on 2008/07/15 17:59:55 UTC
How can I pass each filename of a fileset to a macrodef?
Hi,
I couldn´t find a better subject for describing the problem that I have. It seems quite tricky to me...
I have a directory with multiple files of which I don´t know the exact names like this:
yo1234.order
yo1236.order
8211_020_yo1234.pdf
8211_040_yo1236.pdf
As you can see, there are pairs of files (.order and .pdf) with the id "yo....".
I want to move each of these pairs into a sub-dir with the name of the id:
|
|-- 1234
| |
| |-- yo1234.order
| |-- 8211_020_yo1234.pdf
|
|-- 1236
|
|-- yo1236.order
|-- 8211_040_yo1236.pdf
I´ve got everything working when I enter the filename to use manually (s. property "todo" in XML below).
I guess, I have to put all the actions into a macrodef and pass the filename as a parameter.
I would enumerate all the files in that dir with a fileset, but how can I go through that enum and pass each filename to the macrodef???
Lars
<target name="Main" description="Moves files into appropriate folders">
<!-- create folder with current date -->
<tstamp/>
<mkdir dir="${dir.source}/${DSTAMP}"/>
<!-- Get order number from file -->
<property name="todo" value="yo1234.order"/>
<loadfile property="order.number" srcFile="${dir.source}/${todo}">
<filterchain>
<linecontains>
<contains value="${order.marker}"/>
</linecontains>
<replacestring from="${order.marker}" to=""/>
<trim/>
<striplinebreaks/>
</filterchain>
</loadfile>
<!-- Create sub-folder for specific order -->
<mkdir dir="${dir.source}/${DSTAMP}/${order.number}"/>
<!-- Move order into sub-folder -->
<move todir="${dir.source}/${DSTAMP}/${order.number}">
<fileset dir="${dir.source}">
<include name="*${order.number}.*"/>
</fileset>
</move>
</target>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org
RE: How can I pass each filename of a fileset to a macrodef?
Posted by Lars Monsees <l....@atlantisgmbh.de>.
Thx, that works fine =)
Usage examples (I couldn´t find them in ant-contrib) are here:
http://www.loribel.com/info/memento/ant.html (french)
Lars
> ant-contrib <for> sounds like what you want.
>
> HTH,
> Matt
>
> --- Lars Monsees <l....@atlantisgmbh.de> wrote:
>
>> Hi,
>>
>> I couldn´t find a better subject for describing the
>> problem that I have. It seems quite tricky to me...
>>
>>
>> I have a directory with multiple files of which I
>> don´t know the exact names like this:
>>
>> yo1234.order
>> yo1236.order
>> 8211_020_yo1234.pdf
>> 8211_040_yo1236.pdf
>>
>> As you can see, there are pairs of files (.order and .pdf) with the
>> id "yo....". I want to move each of these pairs into a sub-dir
>> with the name of the id:
>>
>> |
>> |-- 1234
>> | |
>> | |-- yo1234.order
>> | |-- 8211_020_yo1234.pdf
>> |
>> |-- 1236
>> |
>> |-- yo1236.order
>> |-- 8211_040_yo1236.pdf
>>
>>
>> I´ve got everything working when I enter the
>> filename to use manually (s. property "todo" in XML below).
>> I guess, I have to put all the actions into a
>> macrodef and pass the filename as a parameter.
>>
>> I would enumerate all the files in that dir with a
>> fileset, but how can I go through that enum and pass
>> each filename to the macrodef???
>>
>>
>> Lars
>>
>>
>>
>> <target name="Main" description="Moves files into appropriate
>> folders"> <!-- create folder with current date -->
>> <tstamp/>
>> <mkdir dir="${dir.source}/${DSTAMP}"/>
>>
>> <!-- Get order number from file -->
>> <property name="todo" value="yo1234.order"/>
>>
>> <loadfile property="order.number"
>> srcFile="${dir.source}/${todo}">
>> <filterchain>
>> <linecontains>
>> <contains
>> value="${order.marker}"/>
>> </linecontains>
>> <replacestring from="${order.marker}"
>> to=""/>
>> <trim/>
>> <striplinebreaks/>
>> </filterchain>
>> </loadfile>
>>
>> <!-- Create sub-folder for specific order
>> -->
>> <mkdir
>> dir="${dir.source}/${DSTAMP}/${order.number}"/>
>>
>> <!-- Move order into sub-folder -->
>> <move
>> todir="${dir.source}/${DSTAMP}/${order.number}">
>> <fileset dir="${dir.source}">
>> <include name="*${order.number}.*"/>
>> </fileset>
>> </move>
>>
>> </target>
>>
>>
> ---------------------------------------------------------------------
>> To unsubscribe, e-mail:
>> user-unsubscribe@ant.apache.org
>> For additional commands, e-mail:
>> user-help@ant.apache.org
>>
>>
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org
Re: How can I pass each filename of a fileset to a macrodef?
Posted by Matt Benson <gu...@yahoo.com>.
ant-contrib <for> sounds like what you want.
HTH,
Matt
--- Lars Monsees <l....@atlantisgmbh.de> wrote:
> Hi,
>
> I couldn´t find a better subject for describing the
> problem that I have. It seems quite tricky to me...
>
>
> I have a directory with multiple files of which I
> don´t know the exact names like this:
>
> yo1234.order
> yo1236.order
> 8211_020_yo1234.pdf
> 8211_040_yo1236.pdf
>
> As you can see, there are pairs of files (.order and
> .pdf) with the id "yo....".
> I want to move each of these pairs into a sub-dir
> with the name of the id:
>
> |
> |-- 1234
> | |
> | |-- yo1234.order
> | |-- 8211_020_yo1234.pdf
> |
> |-- 1236
> |
> |-- yo1236.order
> |-- 8211_040_yo1236.pdf
>
>
> I´ve got everything working when I enter the
> filename to use manually (s. property "todo" in XML
> below).
> I guess, I have to put all the actions into a
> macrodef and pass the filename as a parameter.
>
> I would enumerate all the files in that dir with a
> fileset, but how can I go through that enum and pass
> each filename to the macrodef???
>
>
> Lars
>
>
>
> <target name="Main" description="Moves files into
> appropriate folders">
> <!-- create folder with current date -->
> <tstamp/>
> <mkdir dir="${dir.source}/${DSTAMP}"/>
>
> <!-- Get order number from file -->
> <property name="todo" value="yo1234.order"/>
>
> <loadfile property="order.number"
> srcFile="${dir.source}/${todo}">
> <filterchain>
> <linecontains>
> <contains
> value="${order.marker}"/>
> </linecontains>
> <replacestring from="${order.marker}"
> to=""/>
> <trim/>
> <striplinebreaks/>
> </filterchain>
> </loadfile>
>
> <!-- Create sub-folder for specific order
> -->
> <mkdir
> dir="${dir.source}/${DSTAMP}/${order.number}"/>
>
> <!-- Move order into sub-folder -->
> <move
> todir="${dir.source}/${DSTAMP}/${order.number}">
> <fileset dir="${dir.source}">
> <include name="*${order.number}.*"/>
> </fileset>
> </move>
>
> </target>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> user-unsubscribe@ant.apache.org
> For additional commands, e-mail:
> user-help@ant.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org