Avatar billede maeldk Praktikant
12. oktober 2011 - 12:30 Der er 5 kommentarer

Batch: Erstat xxx med yyy fra en liste?

Jeg søger en hjælpende hånd til, at få et batch script til at køre en replace funktion. Jeg kan desværre ikke selv kode men nogen gange kan man være heldig at finde et script til det man står og mangler. Måske i kender en funktion til dette?

Jeg har selv fundet http://www.dostips.com/DtTipsStringManipulation.php hvor jeg kan læse om replace funktionen. Jeg aner dog ikke hvordan jeg i praksis anvender den.

Jeg har en html linje som skal står hundredevis af gange under hinanden.

<img src="/images/test.gif" alt="XXX - blah blah XXX"><br />

Jeg har en lang liste med en masse ord yyy, som skal erstatte XXX, så der kommer et output med:
<img src="/images/test.gif" alt="y1y1y1 - blah blah y1y1y1"><br />
<img src="/images/test.gif" alt="y2y2y2 - blah blah y2y2y2"><br />
osv. osv.

Nogen der har en løsning på hvordan jeg gør dette?

Konkret er yyy byer.
Avatar billede maeldk Praktikant
12. oktober 2011 - 14:00 #1
Jeg har netop fundet http://www.replsoft.com/replacer.html som måske kan gøre jobbet. Er dog også interesseret i den rå kode som kan klare dette.
Avatar billede maeldk Praktikant
12. oktober 2011 - 16:17 #2
@echo off & setlocal EnableDelayedExpansion > Names.new
set /P Line=< Line.txt
set Line=%Line:PLACE=placeX%
for /F "delims=" %%j in (Names.txt) do (
  set Row=!Line:NAME=%%j!
  echo.!Row!>> Names.new
)

Fandt denne kode, men kan ikke helt få det til at virke. Har lavet den lidt om:

@echo off & setlocal EnableDelayedExpansion > Names.new
set /P Line=< Line.txt
set Line=%Line:e=e%
for /F "delims=" %%j in (Names.txt) do (
  set Row=!Line:By=%%j!
  echo.!Row!>> Names.new
)

Names.txt er en txt fil med byer. Line.txt indeholder den linje med "By" som skal erstattes af navnene fra bylisten. Da jeg ikke ved, om man blot kan fjerne set Line=%Line:e=e% har jeg gjort, så den blot laver e om til e.

Det virker ikke.. får ikke noget output.
Avatar billede Slettet bruger
12. oktober 2011 - 22:39 #3
Det kan gøres på utallige måder. Du kan f.eks. misbruge et regneark til at gøre det for dig. Copy-paste byerne i én kolonne og en "formel" i en anden kolonne som spytter dine img elementer ud, f.eks. cellen A1 med et bynavn i cellen B1 med denne formel:

="<img src=""/images/test.gif"" alt=""" & A1 & " - blah blah " & A1 & """><br />"

Og så copy-paste kolonne B.
Avatar billede maeldk Praktikant
13. oktober 2011 - 16:12 #4
Hej tolamaps. Jeg er helt med på hvad du mener, men i B1 som jeg har pastet koden i, der står der bare et 0.
Avatar billede Slettet bruger
13. oktober 2011 - 18:12 #5
Jeg har kun testet det i Calc (LibreOffice), da jeg ikke har Excel, men vil formode syntaksen er den samme.
Jeg kan ikke se hvorfor den skulle spytte et 0 ud, men måske er der nogle andre der kan teste det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester