Avatar billede bfjmnemonic Nybegynder
28. oktober 2003 - 15:30 Der er 4 kommentarer og
1 løsning

Problemer med scripting.

Hej jeg har 2 spørgsmål omkring VBS scripting.

Det er 2 konkrete problemer jeg har. Jeg håber i kan hjælpe mig, jeg har selvfølgelig prøvet at finde noget om det i dokumentationen, eller var jeg ikke her, men desværre uden held.

Q1)
Hvordan indsætter man en tekststreng i en TXT fil hvori der indgår "gåse-tegn" i tekst strengen?

EX:
Dim ofs, f1

Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
Set f1 = oFS.CreateTextFile("C:\file.txt", True)

f1.WriteLine ("Computername="PC00001"")

Q2)

Hvordan ændre man et enkelt ord i en tekst fil?
Kan man søge efter ordet/linien, eller skal man vide hvilken linie det står i?
Avatar billede sjh Nybegynder
28. oktober 2003 - 16:13 #1
'------------------------ Test.vbs ------------------------
Dim objFSO, objFile, strPath, strLine, strOut

  strPath = "D:\SYSTEM\Skrivebord\Test.txt"

  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFile = objFSO.OpenTextFile(strPath, 1)

    Do While Not objFile.AtEndOfStream
      strLine = objFile.ReadLine
      If InStr(1, strLine, "Computername", vbTextCompare) < 0 Then
        strOut = strOut & "Computername=""Navn""" & vbCrLf
          Else
        strOut = strOut & strLine & vbCrLf
      End If
    Loop
    objFile.Close

  Set objFile = Nothing
  Set objFSO = Nothing

  MsgBox Left(strOut, Len(strOut) - 2) '- den sidste vbCrLf (- 2)

'------------------------ Test.vbs ------------------------

så skal du bare gemme det som står i xx = Left(strOut, Len(strOut) - 2)
Avatar billede sjh Nybegynder
28. oktober 2003 - 16:28 #2
naaa det var vel nok sådan du ville have det:

'------------------------ Test.vbs ------------------------
Dim objFSO, objFile, strPath, strLine, strOut, strName

  strPath = "D:\SYSTEM\Skrivebord\Test.txt"
  strName = "Test"

  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFile = objFSO.OpenTextFile(strPath, 1)

    Do While Not objFile.AtEndOfStream
      strLine = objFile.ReadLine
      If InStr(1, strLine, "Computername", vbTextCompare) > 0 Then
        strOut = strOut & "Computername=""" & strName & """" & vbCrLf
          Else
        strOut = strOut & strLine & vbCrLf
      End If
    Loop
    objFile.Close

  Set objFile = objFSO.OpenTextFile(strPath, 2)
  objFile.WriteLine Left(strOut, Len(strOut) - 2)
  objFile.Close

  Set objFile = Nothing
  Set objFSO = Nothing
'------------------------ Test.vbs ------------------------
Avatar billede bfjmnemonic Nybegynder
29. oktober 2003 - 09:23 #3
Jeg aftester det lidt senere idag.
Avatar billede bfjmnemonic Nybegynder
29. oktober 2003 - 16:20 #4
Tak det virker perfekt. :)

BTW: Der er en lille fejl i writeline linien, der mangler paranteser on LEN sætningen.
Avatar billede sjh Nybegynder
29. oktober 2003 - 17:58 #5
ja det skulle ok også være .Write og ikke .WriteLine

objFile.Write Left(strOut, Len(strOut) - 2)

tak for point :-)
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