Avatar billede jacand Nybegynder
06. januar 2003 - 21:23 Der er 15 kommentarer og
1 løsning

Ret i txt fil

Jeg har følgende indhold i en txt fil, hvordan  får man rettet f.eks. Pass=123456 til Pass=654321?
Problemet er at pass= ikke står i samme linie hvergang, kan man lave søg og erstat i en txt fil?
[test]
Login=test
Pass=123456
Home-Ip=-= All IP Homes =-
TimeOut=600
MaxConPerIp=1
MaxUsers=0
RatioMethod=0
RatioUp=1
RatioDown=1
RatioCredit=0
MaxSpeedRcv=512
MaxSpeedSnd=512
QuotaCurrent=0
QuotaMax=0
Dir0=D:\InetPub\
Attr0=RWDAMLSK
Stat_Login=1
Stat_LastLogin=06-01-2003 21:15:10
Stat_LastIP=192.168.0.40
Stat_KBUp=0
Stat_KBDown=0
Stat_FilesUp=0
Stat_FilesDown=0
Stat_FailedUp=0
Stat_FailedDown=0
Avatar billede oasen Nybegynder
06. januar 2003 - 21:52 #1
<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("/din_fil.txt")
Set f = fso.OpenTextFile(filespec,1)

Do While not f.AtEndOfStream
  If Left(f.ReadLine, 4) = "Pass" Then
    NyTekst = NyTekst & Replace(f.ReadLine, GammeltPass, NytPass) & vbCrlf
  Else
    NyTekst & NyTekst & f.ReadLine & vbCrlf
Loop

Set f = fso.OpenTextFile(filespec,2)
f.Write NyTekst

f.Close
%>
Avatar billede oasen Nybegynder
06. januar 2003 - 21:53 #2
Der mangler lige en "End If" ovenover "Loop".
Avatar billede oasen Nybegynder
06. januar 2003 - 21:57 #3
Brug denne i stedet:

<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("/din_fil.txt")
Set f = fso.OpenTextFile(filespec,1)

Do While not f.AtEndOfStream
  Linie = f.ReadLine
  If Left(Linie, 4) = "Pass" Then
    NyTekst = NyTekst & Replace(Linie, GammeltPass, NytPass) & vbCrlf
  Else
    NyTekst & NyTekst & Linie & vbCrlf
  End If
Loop

Set f = fso.OpenTextFile(filespec,2)
f.Write NyTekst

f.Close
%>
Avatar billede jacand Nybegynder
06. januar 2003 - 22:01 #4
den giver:

Microsoft VBScript compilation error '800a03ea'

Syntax error

/ny_side_1.asp, line 13

NyTekst & NyTekst & f.ReadLine & vbCrlf
Avatar billede jacand Nybegynder
06. januar 2003 - 22:04 #5
skal det ikke være NyTekst = NyTekst & Linie & vbCrlf ?
Avatar billede burningice Nybegynder
06. januar 2003 - 22:07 #6
jo, det skal det
Avatar billede oasen Nybegynder
06. januar 2003 - 22:08 #7
Undskyld, jo selvfølgelig: ;)

NyTekst = NyTekst & Linie & vbCrlf
Avatar billede jacand Nybegynder
06. januar 2003 - 22:17 #8
din kode virker men jeg har stadig et lille problem :-)
hvis der er 2 bruger med den samme kode går det galt, kan man lave den så den finder Login=test og retter i linien der kommer lige efter ?
Avatar billede oasen Nybegynder
06. januar 2003 - 22:21 #9
Ja...

<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("/din_fil.txt")
Set f = fso.OpenTextFile(filespec,1)

Do While not f.AtEndOfStream

  Linie = f.ReadLine

  If RetLinie Then
    NyTekst = NyTekst & Replace(Linie, GammeltPass, NytPass) & vbCrlf
    RetLinie = false
  Else
    NyTekst = NyTekst & Linie & vbCrlf
  End If

  If Left(Linie, 5) = "Login" Then
    RetLinie = true
  End If

Loop

Set f = fso.OpenTextFile(filespec,2)
f.Write NyTekst

f.Close
%>
Avatar billede jacand Nybegynder
07. januar 2003 - 10:04 #10
Hvad mangler jeg?
Når jeg retter  If Left(Linie, 5) = "Login" Then til  If Left(Linie, 5) = "Login=" & user Then retter den ikke i ini filen, og hvis den står til If Left(Linie, 5) = "Login" Then retter den alle pass der er i ini filen :-)
min asp kode:
<%
user = "test"
GammeltPass = "123"
NytPass = "123456"
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("../database/Users.ini")
Set f = fso.OpenTextFile(filespec,1)

Do While not f.AtEndOfStream

  Linie = f.ReadLine

  If RetLinie Then
    NyTekst = NyTekst & Replace(Linie, GammeltPass, NytPass) & vbCrlf
    RetLinie = false
  Else
    NyTekst = NyTekst & Linie & vbCrlf
  End If

  If Left(Linie, 5) = "Login=" & user Then
    RetLinie = true
  End If

Loop

Set f = fso.OpenTextFile(filespec,2)
f.Write NyTekst

f.Close
%>


Min ini fil
[admin]
Login=admin
Pass=123
Home-Ip=-= All IP Homes =-
TimeOut=600
MaxConPerIp=1
MaxUsers=0
RatioMethod=0
RatioUp=1
RatioDown=1
RatioCredit=0
MaxSpeedRcv=512
MaxSpeedSnd=512
QuotaCurrent=0
QuotaMax=0
Dir0=D:\InetPub\
Attr0=RWDAMLSK
Stat_Login=1
Stat_LastLogin=06-01-2003 21:15:10
Stat_LastIP=192.168.0.40
Stat_KBUp=0
Stat_KBDown=0
Stat_FilesUp=0
Stat_FilesDown=0
Stat_FailedUp=0
Stat_FailedDown=0

[test]
Login=test
Pass=123
Home-Ip=-= All IP Homes =-
TimeOut=600
MaxConPerIp=1
MaxUsers=0
RatioMethod=0
RatioUp=1
RatioDown=1
RatioCredit=0
MaxSpeedRcv=512
MaxSpeedSnd=512
QuotaCurrent=0
QuotaMax=0
Dir0=D:\InetPub\
Attr0=RWDAMLSK
Stat_Login=1
Stat_LastLogin=06-01-2003 21:15:10
Stat_LastIP=192.168.0.40
Stat_KBUp=0
Stat_KBDown=0
Stat_FilesUp=0
Stat_FilesDown=0
Stat_FailedUp=0
Stat_FailedDown=0
Avatar billede oasen Nybegynder
07. januar 2003 - 12:47 #11
Left tager de første (i dette tilfælde 5 karakterer) af linien.
Dvs. ordet "Login".
Hvis du vil have brugernavn bagpå, kan du stryge Left, da du så har hele linien.

If LCase(Linie) = LCase("Login=" & user) Then
Avatar billede jacand Nybegynder
07. januar 2003 - 13:11 #12
Yeps nu virker den.
Jeg tænkte på om det kunne lade sig gøre, at lave den så den retter pass="gl.kode" til pass="nykode" uden at tjekke GammeltPass først.
Avatar billede jacand Nybegynder
07. januar 2003 - 13:12 #13
Jeg har lige hævet til 200 point da du har hjulpet en hel del :-)
Avatar billede oasen Nybegynder
07. januar 2003 - 13:31 #14
Nu rettes linien med password til "Pass=XXX", uanset hvad der stod før:

<%
user = "test"
GammeltPass = "123"
NytPass = "123456"
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("../database/Users.ini")
Set f = fso.OpenTextFile(filespec,1)

Do While not f.AtEndOfStream

  Linie = f.ReadLine

  If RetLinie Then
    NyTekst = NyTekst & "Pass=" & NytPass & vbCrlf
    RetLinie = false
  Else
    NyTekst = NyTekst & Linie & vbCrlf
  End If

  If LCase(Linie) = LCase("Login=" & user) Then
    RetLinie = true
  End If

Loop

Set f = fso.OpenTextFile(filespec,2)
f.Write NyTekst

f.Close
%>
Avatar billede jacand Nybegynder
07. januar 2003 - 15:49 #15
Nu kan den det den skal kunne. tusinde tak for hjælpen :-)
Avatar billede oasen Nybegynder
07. januar 2003 - 16:23 #16
Selv tak :=)
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