Toon posts:

[VBS] string vervangen in text file

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een scriptje dat een string gaat vervangen in een txt file. het begin van deze string is steeds hetzelfde maar het einde is dynamisch. Hieronder de code:

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
Option Explicit  
  
Dim objFSO  
  
Dim objFile  
  
Dim strContents  
  
Dim strNewText  
  
Const ForReading = 1  
  
Const ForWriting = 2  
  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
  
Set objFile = objFSO.OpenTextFile("C:\Text.txt", ForReading)  
  
strContents = objFile.ReadAll
  
objFile.Close  
  
If InStr(strContents, "test1 = ") Then  
  
strNewText = Replace(strContents, "test1 = ", "test1 = 564")  
  
End If  
  
Set objFile = objFSO.OpenTextFile("C:\Text.txt", ForWriting)  
  
objFile.Write strNewText  
  
objFile.Close


De string kan bijvoorbeeld volgende zijn:
test1 = 456456.45 of
test1 = 89,1

Maar dit kan nog duizende andere combinaties aannemen.
Deze wil ik dan vervangen door
test1 = 10

Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 15:58
het rechterdeel maakt toch niks uit je hoeft alleen te matchen met het linkerdeel en dan de string te vervangen

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het rechterdeel moet vervangen worden. Indien er staat test1 = 45466.565 moet dit test1 = 10 worden. Buiten deze string staan er ook nog andere parameters in de textfile.

Acties:
  • 0 Henk 'm!

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Hoe ziet je tekstbestand eruit?
Als elke "test1 = " op een eigen regel staat dan kan je kijken of de regel ermee begint en dan de hele regel vervangen.

http://xyproblem.info/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit staat op een eigen regel hoogstwaarschijnlijk. Hoe kan ik dan die regel vervangen? Heb je hier misschien een voorbeeld van?

Acties:
  • 0 Henk 'm!

  • Big Womly
  • Registratie: Oktober 2007
  • Laatst online: 01-09 13:39

Big Womly

Live forever, or die trying

Ik zie 2 opties
1) Regular expressions. Ik laat je zelf wat meer opzoeken hierover
2) Ipv alles in 1 keer in te lezen, regel voor regel inlezen. Vermits het linker deel fixed is en het rechter moet vervange worden (tot op het einde van het record?) kan je de aanpassing doen adhv Left functie (of Mid) met een concat. Left(regel, 1, Instr(regel, "test = ")-1) & "test = 10"

When you talk to God it's called prayer, but when God talks to you it's called schizophrenia


Acties:
  • 0 Henk 'm!

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Gebruik "Scripting.TextStream" daar kan je de functie "ReadLine" van gebruiken om een regel te lezen, deze kan je dan controleren of het begint met "test1 = " en dan de hele regel vervangen.

http://xyproblem.info/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok bedankt iedereen. Ik denk dat k mijn oplossing hierin wel vindt.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1