Solved

Bat script replacing a string

Posted on 2010-09-19
8
386 Views
Last Modified: 2012-05-10
Hi,

I got the script below. I am trying to replace a line with a new one.

If I do like this it works:
C:\hudson\jobs\Galop_Release_130_-_Build\workspace\trunk\galopBuildUtilsV2\scripts\BatchSubstitute.bat "/JarRepositor
y/hibernate/hibernate-3.3.2.GA.jar" "/JarRepository/hibernate/hibernate-3.3.2-weaved-by-jnet-log-2.2.2.jar" C:\hudson\jobs\Galop_Release_130_-_Build\workspace\trunk\Foundation\a.classpath

If I do like this it dont work. how can I write the second string to make it work? I need to have it as I trying to do.

I understand that it is this last part sourcepath="/JarRepository/hibernate/hiber
nate-3.3.2.GA-src.zip"  that it think it is a file. But how can I write the string to make dos understand it is a string?

C:\hudson\jobs\Galop_Release_130_-_Build\workspace\trunk\galopBuildUtilsV2\scripts\BatchSubstitute.bat "/JarRepositor
y/hibernate/hibernate-3.3.2.GA.jar" "/JarRepository/hibernate/hibernate-3.3.2-weaved-by-jnet-log-2.2.2.jar" sourcepath="/JarRepository/hibernate/hiber
nate-3.3.2.GA-src.zip" C:\hudson\jobs\Galop_Release_130_-_Build\workspace\trunk\Foundation\a.classpath
The system cannot find the file specified.
@echo off

REM -- Prepare the Command Processor --

SETLOCAL ENABLEEXTENSIONS

SETLOCAL DISABLEDELAYEDEXPANSION



::BatchSubstitude - parses a File line by line and replaces a substring"

::syntax: BatchSubstitude.bat OldStr NewStr File

::          OldStr [in] - string to be replaced

::          NewStr [in] - string to replace with

::          File   [in] - file to be parsed

:$changed 20100915

if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF

for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do (

    set "line=%%B"

    if defined line (

        call set "line=echo.%%line:%~1=%~2%%"

        for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X

    ) ELSE echo.

)

Open in new window

0
Comment
Question by:Mickeys
  • 5
  • 3
8 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 33711408
Even if it's possible to do it in a batch file, i suggest you don't. Use an Ant replace task or write another Java app to do it
0
 

Author Comment

by:Mickeys
ID: 33711429
and if I should use ant it will look like?
0
 

Author Comment

by:Mickeys
ID: 33711536
C:\temp>ant
Buildfile: build.xml

replaceText:

BUILD FAILED
C:\temp\build.xml:6: replace doesn't support the "sourcepath" attribute

Total time: 0 seconds
<?xml version="1.0" encoding="UTF-8"?>



<project default="replaceText" basedir="./tem">

	

	<target name="replaceText">

		<replace file=".classpath" token="/JarRepository/hibernate/hibernate-3.3.2.GA.jar" value="/JarRepository/hibernate/hibernate-3.3.2-weaved-by-jnet-log-2.2.2.jar" sourcepath="/JarRepository/hibernate/hibernate-3.3.2.GA-src.zip"/>

	</target>

	

</project>

Open in new window

0
 
LVL 86

Expert Comment

by:CEHJ
ID: 33711539
I can't say exactly as i don't understand the batch file - at that level it becomes a 'write-only' language ;)

If you want to script Windows, Powershell is much better

http://ant.apache.org/manual/Tasks/replace.html
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 86

Expert Comment

by:CEHJ
ID: 33711545
Get rid of the sourcepath attribute
0
 

Author Comment

by:Mickeys
ID: 33711549
but that is what the string includes. It is the same error as when I used bat. I need this line into the file

/JarRepository/hibernate/hibernate-3.3.2-weaved-by-jnet-log-2.2.2.jar" sourcepath="/JarRepository/hibernate/hibernate-3.3.2.GA-src.zip
0
 
LVL 86

Accepted Solution

by:
CEHJ earned 500 total points
ID: 33711556
Try using the CDATA form
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 33711602
:)
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

This article will show, step by step, how to integrate R code into a R Sweave document
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
The viewer will learn how to implement Singleton Design Pattern in Java.
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.

759 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now