petterg Skrevet 25. mars 2008 Del Skrevet 25. mars 2008 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
petterg Skrevet 25. mars 2008 Forfatter Del Skrevet 25. mars 2008 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
Alexen Skrevet 8. august 2008 Del Skrevet 8. august 2008 Velkommen til fantastiske vbscript-land ----------------------------- 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 Lenke til kommentar
teflonpanne Skrevet 8. august 2008 Del Skrevet 8. august 2008 Eller last ned cygwin og bruk ed/sed. Lenke til kommentar
Alexen Skrevet 8. august 2008 Del Skrevet 8. august 2008 Ja en annen mulighet er vel å installere Virtual Pc eller vmWare, laste ned en linuxdistro, installere den, scripte noe i bash som jobber mot en Shared folder utenfor den virtuelle maskinen, simsalabom Lenke til kommentar
teflonpanne Skrevet 8. august 2008 Del Skrevet 8. august 2008 Det er ikke såå komplisert å laste ned cygwin da. Og med sed så er det gjort med en linje. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå