Avatar billede dp2001 Juniormester
21. januar 2004 - 15:50 Der er 3 kommentarer og
1 løsning

WSH: hent streng

Hej

Jeg vil gerne

1) scanne en række filer igennem i et bestemt bibliotek (hovedloop)
2) tjekke hver enkelt linje (subloop) efter 2 bestemte strenge
3) skrive til én output-fil

Indtil videre har jeg kun.....


  strPath = "XY.txt"

  Set fso = WScript.Createobject("scripting.filesystemobject")
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFile = objFSO.OpenTextFile(strPath, 1)
 
  Do While Not objFile.AtEndOfStream

  X_ind = False
  Y_ind = False
 
  X_rec = mid(objFile.ReadLine,1,5)
  Y_rec = mid(objFile.ReadLine,1,8)

  if X_rec = "XXXXXXXX" then
    X_ind = True
  end if

  if Y_rec = "YYYYY" then
    Y_ind = True
  end if

  if X_ind = True then
    ' SKRIV information om input-fil + X_rec til output-fil
  end if

  if Y_ind = True then
    ' SKRIV information om input-fil + Y_rec til output_fil
  end if
 
  Loop

  objFile.Close 
  Set objfFile = Nothing
------------------------

Hvordan får jeg bygget 1, 2 og 3 på?
Avatar billede bfjmnemonic Nybegynder
23. januar 2004 - 13:08 #1
Det må være noget i denne her stil:

Dim WshShell, oFS, SearchPath, ResultFile, f1, SearchStr1, SearchStr2, oCurFolder, CheckFile, file, strLine
Const ForReading = 1, ForWriting = 2, ForAppending = 8

Set WshShell = CreateObject("Wscript.Shell")
Set oFS = CreateObject("Scripting.FileSystemObject")

SearchPath = "c:\temp\Search"     'sti til søgningens start
SearchStr1 = "Ost"                'Søgeord1
SearchStr2 = "Hejsa"            'Søgeord2
ResultFile = "Results.txt"        'Resultat fil

Set oCurFolder = oFS.GetFolder(SearchPath)
Set f1 = oFS.OpenTextFile(ResultFile, ForWriting, True)

For Each file In oCurFolder.Files
    Set CheckFile = oFS.OpenTextFile(file)
    Do While Not CheckFile.AtEndOfStream
        strLine = CheckFile.ReadLine
        If InStr(1, strLine, SearchStr1, vbtextCompare) > 0 Then
'            WshShell.Popup "Filen: " & file & " Har Ordet: " & SearchStr1 & " i sig."
            f1.WriteLine "Filen: " & file & " Har Ordet: " & SearchStr1 & " i sig."
        End If
        If (InStr(1, strLine, SearchStr2, vbTextCompare) > 0) Then
'            WshShell.Popup "Filen: " & file & " Har Ordet: " & SearchStr2 & " i sig."
            f1.WriteLine "Filen: " & file & " Har Ordet: " & SearchStr2 & " i sig."
        End If
    Loop
Next

FindFile SearchPath
f1.Close
MsgBox "Done"

Function FindFile(p_sFromFolder)
    Set oCurFolder = oFS.GetFolder(p_sFromFolder)

    For Each subfolder in oCurFolder.SubFolders
        FindFile p_sFromFolder & "\" & subfolder.Name
        Set f = subFolder.Files

        For Each file in f
            Set CheckFile = oFS.OpenTextFile(file)
            Do While Not CheckFile.AtEndOfStream
                strLine = CheckFile.ReadLine
                If InStr(1, strLine, SearchStr1, vbtextCompare) > 0 Then
'                    WshShell.Popup "Filen: " & file & " Har Ordet: " & SearchStr1 & " i sig."
                    f1.WriteLine "Filen: " & file & " Har Ordet: " & SearchStr1 & " i sig."
                End If
                If (InStr(1, strLine, SearchStr2, vbTextCompare) > 0) Then
'                    WshShell.Popup "Filen: " & file & " Har Ordet: " & SearchStr2 & " i sig."
                    f1.WriteLine "Filen: " & file & " Har Ordet: " & SearchStr2 & " i sig."
                End If
            Loop
        Next
       
        Set f = Nothing
    Next
End Function
Avatar billede bfjmnemonic Nybegynder
23. januar 2004 - 13:10 #2
Jeg syntes btw. ikke det er så mange points du giver for det store arbejde. ...
Avatar billede bfjmnemonic Nybegynder
23. januar 2004 - 18:19 #3
Her kommer lige v.2

Der er bare rettet en smule, og Option Explicit er tilføjet:

Option Explicit

Dim WshShell, oFS, SearchPath, ResultFile, f1, SearchStr1, SearchStr2, oCurFolder, CheckFile, file, strLine, subFolder, f
Const ForReading = 1, ForWriting = 2, ForAppending = 8

Set WshShell = CreateObject("Wscript.Shell")
Set oFS = CreateObject("Scripting.FileSystemObject")

SearchPath = "c:\temp\Search"        'sti til søgningens start
SearchStr1 = "Haloo"                'Søgeord1
SearchStr2 = "Hejsa"                'Søgeord2
ResultFile = "Results.txt"            'Resultat fil

Set oCurFolder = oFS.GetFolder(SearchPath)
Set f1 = oFS.OpenTextFile(ResultFile, ForWriting, True)

For Each file In oCurFolder.Files
    Set CheckFile = oFS.OpenTextFile(file)
    Do While Not CheckFile.AtEndOfStream
        strLine = CheckFile.ReadLine
        If InStr(1, strLine, SearchStr1, vbtextCompare) > 0 Then
'            WshShell.Popup "Filen: " & file & " Har Ordet: " & SearchStr1 & " i sig."
            f1.WriteLine "Filen: " & file & " Har Ordet: " & SearchStr1 & " i sig."
        End If
        If (InStr(1, strLine, SearchStr2, vbTextCompare) > 0) Then
'            WshShell.Popup "Filen: " & file & " Har Ordet: " & SearchStr2 & " i sig."
            f1.WriteLine "Filen: " & file & " Har Ordet: " & SearchStr2 & " i sig."
        End If
    Loop
Next

FindFile SearchPath
f1.Close
MsgBox "Done"

Function FindFile(p_sFromFolder)
    Set oCurFolder = oFS.GetFolder(p_sFromFolder)

    For Each subfolder in oCurFolder.SubFolders
        FindFile p_sFromFolder & "\" & subfolder.Name
    Next

    Set f = oCurFolder.Files

    For Each file in f
        Set CheckFile = oFS.OpenTextFile(file)
        Do While Not CheckFile.AtEndOfStream
            strLine = CheckFile.ReadLine
            If InStr(1, strLine, SearchStr1, vbtextCompare) > 0 Then
'                WshShell.Popup "Filen: " & file & " Har Ordet: " & SearchStr1 & " i sig."
                f1.WriteLine "Filen: " & file & " Har Ordet: " & SearchStr1 & " i sig."
            End If
            If (InStr(1, strLine, SearchStr2, vbTextCompare) > 0) Then
'                WshShell.Popup "Filen: " & file & " Har Ordet: " & SearchStr2 & " i sig."
                f1.WriteLine "Filen: " & file & " Har Ordet: " & SearchStr2 & " i sig."
            End If
        Loop
    Next
     
    Set f = Nothing

End Function
Avatar billede dp2001 Juniormester
26. januar 2004 - 12:10 #4
Jeg takker for hjælpen. Selvom jeg lige skulle tilrette lidt, så var det i høj grad brugbart.
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