Gå til innhold

scripte søk/erstatt i tekstfil


Anbefalte innlegg

Trenger å lage et script som kan søke opp tekst i .ini-filer og erstatte med annen tekst.

Har funnet endel på området på nett, men de jeg har prøvd gjør diverse rare ting. F.eks blir blanke linjer og linjer som ender på =[tall] slettet i de som baserer seg på [for /f "tokens=*"]

 

Trenger script som både takler å erstatter enkeltord på linjer, og script som erstatter hele linjer. De kan godt være to forskjellige script.

 

Noen som har noen erfaring på området?

Det skal kjøre på w2k3 server.

 

 

(Har ingen erfaring med VB-script, selv om det sikkert hadde vært bedre egnet her.)

Lenke til kommentar
Videoannonse
Annonse

hmm

 

Det nærmer seg noe for det scriptet som bytter hele linjer. Denne takler tilsynelatende alt untatt blanke linjer og linjer med semikolon (for det meste kommentarer). Resultatet blir stygt med funksjonellt.

Det gjenstår fortsatt å gjøre erstattninger innenfor hver linje. Det er for det meste hostnavn og filbaner. Det beste hadde vært fri-tekst søking, men mye kan løses med strenger adskillt med "\"

 

Fordelt på to filer:

 

repl1.bat:

@echo off
if exist test.tmp del test.tmp
for /f "tokens=*" %%a in (test.ini) do call repl2.bat %%a

 

repl2.bat

set LINE=%*
set TMPFILE="test.tmp"

if "%LINE%"=="string1" GOTO REPL1
if "%LINE%"=="string2" GOTO REPL2
if "%LINE%"=="string3" GOTO REPL3

(echo %LINE%)>> %TMPFILE%
GOTO END

:REPL1
(echo new1)>> %TMPFILE%
GOTO END

:REPL2
(echo new2)>> %TMPFILE%
GOTO END

:REPL3
(echo new3)>> %TMPFILE%
GOTO END

:END

Lenke til kommentar
  • 4 måneder senere...

Velkommen til fantastiske vbscript-land :p

 

 

-----------------------------

Const ForReading = 1

Const ForWriting = 2

 

strFileName = Wscript.Arguments(0)

strOldText = Wscript.Arguments(1)

strNewText = Wscript.Arguments(2)

 

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFile = objFSO.OpenTextFile(strFileName, ForReading)

 

strText = objFile.ReadAll

objFile.Close

strNewText = Replace(strText, strOldText, strNewText)

 

Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)

objFile.WriteLine strNewText

objFile.Close

 

-------------------------

 

Lagre dette som Erstatt.vbs (ellernoeannet.vbs) og kjør scriptet slik: erstatt.vbs <filnavn> <gammeltekst> <nytekst>

 

Bare et tips. Viss du vil erstatte hele ord må du huske å legge til et mellomrom. Viss du for eksempel ønsker å erstatte john med Kåre må du bruke "John " og "Kåre ". Ellers kan det hende den finner Johnny og endrer det til Kåreny :p

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...