You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Neil Benn <ne...@gmail.com> on 2005/08/22 22:36:23 UTC
ReplaceRegExp with windows filenames
Hello,
I need to make an ant task which will go into a file, look
for a pattern and replace it with the contents of the ${basedir}
variable.
I have the following xml to do this:
<target name="replace_inf_paths" depends="init">
<replaceregexp file="${basedir}/installer/CE/DropPaq.inf"
match="C\:\\.*\\DropPaq"
replace="${basedir}"
byline="true"/>
</target>
The target text is :
1 = ,"DropPaqEtc",,"C:\Documents and Settings\Neil Benn\My
Documents\svnfiles\trunk\DropPaq\DropPaq\installer\CE" ; The etc
directopry which contains all image and the jar file
2 = ,"CremeLib",,"C:\Documents and Settings\Neil Benn\My
Documents\svnfiles\trunk\DropPaq\installer\CE\Creme\lib" ; Contains
all required creme lib files
3 = ,"CremeBin",,"C:\Documents and Settings\Neil Benn\My
Documents\svnfiles\trunk\DropPaq\installer\CE\Creme\bin" ; Contains
all required creme bin file
4 = ,"DropPaqSave",,"C:\Documents and Settings\Neil Benn\My
Documents\svnfiles\DropPaq\savefiles" ; References the save files
5 = ,"DropPaqLib",,"C:\Documents and Settings\Neil Benn\My
Documents\svnfiles\trunk\DropPaq\lib" ; The lib directory
6 = ,"Bin",,"C:\Documents and Settings\Neil Benn\My
Documents\svnfiles\trunk\DropPaq\installer\CE" ; Te bin directory for
this app
So when I run this, it finds the text but does this :
1 = ,"DropPaqEtc",,"C:Documents and SettingsNeil BennMy
DocumentssvnfilestrunkDropPaq\installer\CE" ; The etc directopry
which contains all image and the jar file
2 = ,"CremeLib",,"C:Documents and SettingsNeil BennMy
DocumentssvnfilestrunkDropPaq\installer\CE\Creme\lib" ; Contains all
required creme lib files
3 = ,"CremeBin",,"C:Documents and SettingsNeil BennMy
DocumentssvnfilestrunkDropPaq\installer\CE\Creme\bin" ; Contains all
required creme bin file
4 = ,"DropPaqSave",,"C:Documents and SettingsNeil BennMy
DocumentssvnfilestrunkDropPaq\savefiles" ; References the save files
5 = ,"DropPaqLib",,"C:Documents and SettingsNeil BennMy
DocumentssvnfilestrunkDropPaq\lib" ; The lib directory
6 = ,"Bin",,"C:Documents and SettingsNeil BennMy
DocumentssvnfilestrunkDropPaq\installer\CE" ; Te bin directory for
this app
As you can see, I've lost the backslashes which means that the
filenames are no longer valid. Is there a way I can get round this -
I can't put two backslashes in basedir. The file is a windows file
(used to make a cab file for a pda) so I need windows filesname.
Does anyone know a way to get round this?
Any and all help greatly appreciated.
Cheers,
Neil
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org
Re: ReplaceRegExp with windows filenames
Posted by Neil Benn <ne...@gmail.com>.
Hello,
Thanks for the tip - however it still does the same thing -
it seems like the backslashes are simply being ignored (if there is
one or two). I'll make some further investigations - if anyone has
ideas as to what could be going on here - I;d appreciate any pointers.
One thing I thought of is loading the filei into a property, using
the propertyregex on the property to replace and writing the file back
out from the property. However I can;t find a task to write a
property into a file (ant property write {of variation thereof} -
gives back the wrong things) - does anyone know of one?
Here's the verbose output I get :
init:
[property] Loading C:\Documents and Settings\Neil Benn\.ant.properties
replace_inf_paths:
[echo] C:\Documents and Settings\Neil Benn\My Documents\svnfiles\trunk\Drop
Paq
[echo] C:\\Documents and Settings\\Neil Benn\\My Documents\\svnfiles\\trunk
\\DropPaq
[replaceregexp] Replacing pattern 'C\:\\.*\\DropPaq' with 'C:\\Documents and Set
tings\\Neil Benn\\My Documents\\svnfiles\\trunk\\DropPaq' in 'C:\Documents and S
ettings\Neil Benn\My Documents\svnfiles\trunk\DropPaq\installer\CE\DropPaq.inf'
by line.
[replaceregexp] File has changed; saving the updated file
Thanks.
Cheers,
Neil
On 8/23/05, Andrew Goktepe <an...@gmail.com> wrote:
> Assuming that having double backslashes in the basedir would solve your
> problem, you could use the propertyregex task from ant-contrib to use a
> second property with that substitution:
> <taskdef resource="net/sf/antcontrib/antlib.xml"/>
> ...
> <propertyregex property="basedir.escaped" input="${basedir}" regexp="\\"
> replace="\\\\\\\\" global="true"/>
> <replaceregexp file="${basedir}/installer/CE/DropPaq.inf"
> match="C\:\\.*\\DropPaq"
> replace="${basedir.escaped}"
> byline="true"/>
> Yes, there are 8 backslashes in the 'replace' attribute value. That is how
> many I needed to end up with 2 backslashes in the replaced string when I
> tested this.
> -Andrew
> On 8/22/05, Neil Benn <ne...@gmail.com> wrote:
> >
> > Hello,
> >
> > I need to make an ant task which will go into a file, look
> > for a pattern and replace it with the contents of the ${basedir}
> > variable.
> >
> > I have the following xml to do this:
> >
> > <target name="replace_inf_paths" depends="init">
> > <replaceregexp file="${basedir}/installer/CE/DropPaq.inf"
> > match="C\:\\.*\\DropPaq"
> > replace="${basedir}"
> > byline="true"/>
> > </target>
> >
> > The target text is :
> >
> > 1 = ,"DropPaqEtc",,"C:\Documents and Settings\Neil Benn\My
> > Documents\svnfiles\trunk\DropPaq\DropPaq\installer\CE" ; The etc
> > directopry which contains all image and the jar file
> > 2 = ,"CremeLib",,"C:\Documents and Settings\Neil Benn\My
> > Documents\svnfiles\trunk\DropPaq\installer\CE\Creme\lib" ; Contains
> > all required creme lib files
> > 3 = ,"CremeBin",,"C:\Documents and Settings\Neil Benn\My
> > Documents\svnfiles\trunk\DropPaq\installer\CE\Creme\bin" ; Contains
> > all required creme bin file
> > 4 = ,"DropPaqSave",,"C:\Documents and Settings\Neil Benn\My
> > Documents\svnfiles\DropPaq\savefiles" ; References the save files
> > 5 = ,"DropPaqLib",,"C:\Documents and Settings\Neil Benn\My
> > Documents\svnfiles\trunk\DropPaq\lib" ; The lib directory
> > 6 = ,"Bin",,"C:\Documents and Settings\Neil Benn\My
> > Documents\svnfiles\trunk\DropPaq\installer\CE" ; Te bin directory for
> > this app
> >
> > So when I run this, it finds the text but does this :
> >
> > 1 = ,"DropPaqEtc",,"C:Documents and SettingsNeil BennMy
> > DocumentssvnfilestrunkDropPaq\installer\CE" ; The etc directopry
> > which contains all image and the jar file
> > 2 = ,"CremeLib",,"C:Documents and SettingsNeil BennMy
> > DocumentssvnfilestrunkDropPaq\installer\CE\Creme\lib" ; Contains all
> > required creme lib files
> > 3 = ,"CremeBin",,"C:Documents and SettingsNeil BennMy
> > DocumentssvnfilestrunkDropPaq\installer\CE\Creme\bin" ; Contains all
> > required creme bin file
> > 4 = ,"DropPaqSave",,"C:Documents and SettingsNeil BennMy
> > DocumentssvnfilestrunkDropPaq\savefiles" ; References the save files
> > 5 = ,"DropPaqLib",,"C:Documents and SettingsNeil BennMy
> > DocumentssvnfilestrunkDropPaq\lib" ; The lib directory
> > 6 = ,"Bin",,"C:Documents and SettingsNeil BennMy
> > DocumentssvnfilestrunkDropPaq\installer\CE" ; Te bin directory for
> > this app
> >
> > As you can see, I've lost the backslashes which means that the
> > filenames are no longer valid. Is there a way I can get round this -
> > I can't put two backslashes in basedir. The file is a windows file
> > (used to make a cab file for a pda) so I need windows filesname.
> >
> > Does anyone know a way to get round this?
> >
> > Any and all help greatly appreciated.
> >
> > Cheers,
> >
> > Neil
> >
> > ---------------------------------------------------------------------
> > 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: ReplaceRegExp with windows filenames
Posted by Andrew Goktepe <an...@gmail.com>.
Assuming that having double backslashes in the basedir would solve your
problem, you could use the propertyregex task from ant-contrib to use a
second property with that substitution:
<taskdef resource="net/sf/antcontrib/antlib.xml"/>
...
<propertyregex property="basedir.escaped" input="${basedir}" regexp="\\"
replace="\\\\\\\\" global="true"/>
<replaceregexp file="${basedir}/installer/CE/DropPaq.inf"
match="C\:\\.*\\DropPaq"
replace="${basedir.escaped}"
byline="true"/>
Yes, there are 8 backslashes in the 'replace' attribute value. That is how
many I needed to end up with 2 backslashes in the replaced string when I
tested this.
-Andrew
On 8/22/05, Neil Benn <ne...@gmail.com> wrote:
>
> Hello,
>
> I need to make an ant task which will go into a file, look
> for a pattern and replace it with the contents of the ${basedir}
> variable.
>
> I have the following xml to do this:
>
> <target name="replace_inf_paths" depends="init">
> <replaceregexp file="${basedir}/installer/CE/DropPaq.inf"
> match="C\:\\.*\\DropPaq"
> replace="${basedir}"
> byline="true"/>
> </target>
>
> The target text is :
>
> 1 = ,"DropPaqEtc",,"C:\Documents and Settings\Neil Benn\My
> Documents\svnfiles\trunk\DropPaq\DropPaq\installer\CE" ; The etc
> directopry which contains all image and the jar file
> 2 = ,"CremeLib",,"C:\Documents and Settings\Neil Benn\My
> Documents\svnfiles\trunk\DropPaq\installer\CE\Creme\lib" ; Contains
> all required creme lib files
> 3 = ,"CremeBin",,"C:\Documents and Settings\Neil Benn\My
> Documents\svnfiles\trunk\DropPaq\installer\CE\Creme\bin" ; Contains
> all required creme bin file
> 4 = ,"DropPaqSave",,"C:\Documents and Settings\Neil Benn\My
> Documents\svnfiles\DropPaq\savefiles" ; References the save files
> 5 = ,"DropPaqLib",,"C:\Documents and Settings\Neil Benn\My
> Documents\svnfiles\trunk\DropPaq\lib" ; The lib directory
> 6 = ,"Bin",,"C:\Documents and Settings\Neil Benn\My
> Documents\svnfiles\trunk\DropPaq\installer\CE" ; Te bin directory for
> this app
>
> So when I run this, it finds the text but does this :
>
> 1 = ,"DropPaqEtc",,"C:Documents and SettingsNeil BennMy
> DocumentssvnfilestrunkDropPaq\installer\CE" ; The etc directopry
> which contains all image and the jar file
> 2 = ,"CremeLib",,"C:Documents and SettingsNeil BennMy
> DocumentssvnfilestrunkDropPaq\installer\CE\Creme\lib" ; Contains all
> required creme lib files
> 3 = ,"CremeBin",,"C:Documents and SettingsNeil BennMy
> DocumentssvnfilestrunkDropPaq\installer\CE\Creme\bin" ; Contains all
> required creme bin file
> 4 = ,"DropPaqSave",,"C:Documents and SettingsNeil BennMy
> DocumentssvnfilestrunkDropPaq\savefiles" ; References the save files
> 5 = ,"DropPaqLib",,"C:Documents and SettingsNeil BennMy
> DocumentssvnfilestrunkDropPaq\lib" ; The lib directory
> 6 = ,"Bin",,"C:Documents and SettingsNeil BennMy
> DocumentssvnfilestrunkDropPaq\installer\CE" ; Te bin directory for
> this app
>
> As you can see, I've lost the backslashes which means that the
> filenames are no longer valid. Is there a way I can get round this -
> I can't put two backslashes in basedir. The file is a windows file
> (used to make a cab file for a pda) so I need windows filesname.
>
> Does anyone know a way to get round this?
>
> Any and all help greatly appreciated.
>
> Cheers,
>
> Neil
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
>