tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
479
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ThLey ThLey ist offline Rookie
    Registriert seit
    Apr 2007
    Beiträge
    7
    Hallo Leuts',

    bin neuling in VBS.

    ich bitte um Hilfe bei folgendem Problem:

    Es wird eine HTML Datei eingelesen. Diese Datei wird durchsucht nach einem im HTML Code eingebauten Marker "<!-- <Ich bin ein Marker> -->". Die Funktion InStr() liefert mir den Startpunkt in der gesamten Zeichenkette.

    So weit funktioniert das Skript. Jedoch möchte ich nur den Textbereich bis zum Schließenden Tag <!-- </Ich bin ein Marker> --> in ein Array speichern.

    In meiner IF THEN Schleife erhalte ich den Start und Endpunkt des gesuchten Textbereichs. Jedoch gibt es den Marker mehrmals in dem eingelesenen String, so dass hier eine weitere Schleife die einzelnen gesuchten "Textbereiche" in das Array schreiben müsste.

    Es soll eine neue Ausgabedatei erzeugt, die genau die gesuchten Textbereiche enthält.

    Kurz: Wer kann mir zeigen, wie ich einen String in genau die gesuchten Textbereiche Splitte?

    Code :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    
    'Mit Option Explicit ist festgelegt, das nur Variable im Skript benutzt werden, die mit DIM-Anweisungen deklariert sind.
    Option Explicit
     
    'Deklaration der Variablen***************************************************
    Dim WSHShell, objFSO, objNetwork, WorkingFolder, Konfiguration, Title
    Dim f, ScriptOrdner, Frage
    Dim FileMonitor, FilePub
    Dim Zeile
    Dim FileIn, FileZ, FileOut 
    Dim Wochenplan_1, Wochenplan_2
    Dim Datei, FileString, Txt, i, arrSort, arrTest(), oArgs
     
    'Einzufügende Zeile
     
    Zeile1 = "<table border=""0"" width=""100%""><colgroup><col width=""50%""><col width=""50%""></colgroup><tr><td>"
     
    'Erzeugen von Objektreferenzen************************************************
     
    Set WSHShell   = WScript.CreateObject("WScript.Shell")
    Set objFSO     = WScript.CreateObject("Scripting.FileSystemObject")
    Set objNetwork = WScript.CreateObject("WScript.Network")
     
    'Variable *TEST****************************************************************  
      Title = objFSO.GetBaseName(WScript.ScriptName)
      MsgBox "Script Name "+ Title
      ' WorkingFolder ermitteln --- hier befindet sich das Script
      Set f = objFSO.GetFile(WScript.ScriptFullName)  
      ScriptOrdner = f.ParentFolder
       MsgBox "Script Ordner "+ ScriptOrdner 
    '******************************************************************************
     
    'Festlegen des Ausgabe Dateinamens
    FileMonitor = "Monitor_2.html"
    'Festlegen der Einzulesenden Dateinamen
    FilePub = "ausgabe.html"
    '******************************************************************************
     
    'Prüfen ob Datei vorhanden*****************************************************
    If objFSO.FileExists(FilePub) Then
        'Ja, Datei zum Lesen öffnen
            ' Wert 1= Datei wird zum lesen geöffnet
            ' Wert 2= Datei wird zum schreiben geöffnet
            ' Wert 8= Datei wird zum Anhängen von Text geöffnet
            Set FileIn = objFSO.OpenTextFile("C:\Monitor\" + FilePub, 1, False) 
            
            'Datei auslesen. Text String wird zurückgeliefert
            ' ReadAll() liest die komplette Textdatei
            ' ReadLine() liest eine Zeile
            ' Read(AnzahlZeichen)
            FileString = FileIn.ReadAll()
            FileIn.close()
            
            'TEST Inhalt ausgeben
            WScript.Echo FileString
    Else
            WScript.Echo "Datei" & FilePub()&" nicht gefunden!"
    End If
     
    'Nach <!-- </Ich bin ein Marker> --> suchen
    ' InStr() liefert die genaue Strartposition des gesuchten Zeichen, Wortrs zurück
    ' InStr(Startposition, Zeichenkette, SuchText, Vergleichsart)
    ' Startposition: gibt a, ab welchem Zeichen der String durchsucht werden soll
    ' Zeichenkette: der zu durchsuchende Sting
    ' SuchText: gesuchtes Wort, Zeichen
    ' Vergleichsart: Mittels konst. vbTextCompare: Kein unterschied in Groß/klein.  vbBinaryCompare
    ' Wert = 0 Wort nicht vorhanden
     
     
    [COLOR="Red"]Wochenplan_1 = InStr( 1,FileString,"<!-- <Ich bin ein Marker> -->",1)
    If Wochenplan_1 > 0 Then
            Wochenplan_2 = InStr( Wochenplan_1,FileString,"<!-- </Wochenplan> -->",1)
          'In Array zwischenspeichern
             FileZ = Split(FileString, [B][/B]")[/COLOR]
        ' ****Test****
        WScript.Echo Wochenplan_1
        WScript.Echo Wochenplan_2
        WScript.Echo (FileZ(0))
        WScript.Echo (FileZ(1))
        WScript.Echo (FileZ(2))
     
    Else
     MsgBox "Nicht gefunden"
    End If
     
     
     
     
    'Erzeugen der Ausgabe Datei. 
    ' true/false = erlaubt das überschreiben einer vorhandenen Datei 
    Set FileOut = objFSO.CreateTextFile("C:\Monitor\" + FileMonitor, true)
    FileOut.WriteLine("Test")
    FileOut.Close
     
    WScript.Quit
     

  2. #2
    Avatar von DrSoong
    DrSoong DrSoong ist offline Iss was, Doc!
    tutorials.de Premium-User
    Registriert seit
    Jul 2003
    Ort
    Dem Zentrum meiner Welt
    Beiträge
    1.836
    Blog-Einträge
    85
    Ich hab jetzt nicht so die VBS-Erfahrung, aber geht dort nicht auch der Befehl Split()?
    Code vb:
    1
    
    Texte = Split(FileString, "<!-- <Ich bin ein Marker> -->")
    Du kriegst dann ein Array zurückgeliefert (ohne den Trennstring) in dem die einzelnen Teile stehen. Ist VB6-Code, sollte aber in VBS auch funktionieren.


    Der Doc!
     
    A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
    B: Die Scrollbar da rechts ist dir schon mal aufgefallen?

  3. #3
    ThLey ThLey ist offline Rookie
    Registriert seit
    Apr 2007
    Beiträge
    7
    Danke für die AAntwort.

    Das ist mir schon klar. Mein Problem ist viel mehr, dass ich ein HTML Dokument habe, in dem x-mal der Tag "<!-- <Ich bin ein Marker> -->" vorkommen kann, gefolgt von dem Code den ich "heraustrennen" möchte und dem schließenden Tag "<!-- </Ich bin ein Marker> -->"

    Wie stelle ich es am, den HTML Code so zu Spliten, dass ich diesen in einem Array stehen habe, so dass ich dann mit Join() in die gewünschte Form bringen kann?

    Die HTML sieht in etwa so aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    </style></head><body>
    <!-- <Ich bin ein Marker> -->
    <div class=
    ..........
    ......
    </div>>
    <!-- </Ich bin ein Marker> -->
    </td></tr>
    </tbody></table>
    <!-- <Ich bin ein Marker> -->
    <div> ..........</div>
    <!-- </Ich bin ein Marker> -->
    <div>
    ......
    .....
    </div>
    </tbody></table>
    ......
    ......
    Geändert von ThLey (16.05.07 um 18:16 Uhr)
     

  4. #4
    Avatar von DrSoong
    DrSoong DrSoong ist offline Iss was, Doc!
    tutorials.de Premium-User
    Registriert seit
    Jul 2003
    Ort
    Dem Zentrum meiner Welt
    Beiträge
    1.836
    Blog-Einträge
    85
    Ich steh momentan ein bisschen auf der Leitung, poste doch mal eine HTML-Datei so wie sie einzulesen ist und eine Textdatei, so wie sie am Schluss aussehen soll (am besten beide in einem Zip-File).


    Der Doc!
     
    A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
    B: Die Scrollbar da rechts ist dir schon mal aufgefallen?

  5. #5
    ThLey ThLey ist offline Rookie
    Registriert seit
    Apr 2007
    Beiträge
    7
    Siehe unter neuem Thema:

    "Problem mit Text Datei"

    dort werde ich auch die Datei posten.
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 20.07.10, 13:36
  2. Keying anhand eines Fotos
    Von HoPi im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 2
    Letzter Beitrag: 09.11.08, 07:57
  3. Antworten: 4
    Letzter Beitrag: 21.08.08, 16:10
  4. Shell script - Zerteilen eines Textstrings
    Von treki im Forum Linux & Unix
    Antworten: 2
    Letzter Beitrag: 30.05.07, 22:52
  5. IK anhand eines Strichmännchens
    Von Atomic Bolt im Forum Cinema 4D
    Antworten: 14
    Letzter Beitrag: 15.10.05, 18:41