fireron
Goto Top

Bestimmten Inhalt aus Textdatei auslesen und in andere Textdatei schreiben

Hallo Zusammen,

ich bin hier neu und habe bisher keinerlei Ahnung von VBS. Habe bei google schon geschaut, aber bisher überhaupt nichts gefunden.

Es geht um folgendes:

Ich habe eine Textdatei A.txt

Der Inhalt von A.txt sieht so aus (mal mit umbruch mal ohne):

<Login_name="Anton"><geschlecht="m">
<Login_name="Berta"><geschlecht="w">
<Login_name="Caesar"><geschlecht="m">
<Login_name="Dora"><geschlecht="w">

Ich möchte nun eine VBS-Datei erstellen, die jeweils nur die Login_Namen ausliest (also Anton, Berta, Caesar und Dora); ohne Anführungszeichen und diese dann in eine Textdatei B.txt schreibt.

Der Inhalt in B.txt soll dann so aussehen:

Anton
Berta
Caesar
Dora

Mit welchen Befehlen kann ich das realisieren? Wie kann ich dem Programm sagen, dass es speziell nach "<Login_name=" suchen soll und dann bis zum nächsten Anführungszeichen sich die Namen merkt. Das macht auf diese Weise schon Sinn, da die Namen unterschiedlich lang sein können. Natürlich habe den Inhalt aus A.txt gekürzt. Da stehen natürlich noch andere Dinge drin.

Der Ablauf lautet wie folgt:

Springe zu "<Login_name="
Nehme jeden Buchstaben bis zum nächsten "
Schreibe den Namen in B.txt
Wiederhole solange bis A.txt komplett durchsucht wurde

Ich habe schon nach befehlen gesucht aber ich kann damit überhaupt nichts anfangen. Ich möchte hier nicht nach komplettten Quellcodes fragen, lediglich nach den Befehlen, die ich brauche.

Vielen Danke schonmal!

MfG
Fireron

Content-Key: 150529

Url: https://administrator.de/contentid/150529

Printed on: April 27, 2024 at 02:04 o'clock

Member: Fitzcarraldo
Fitzcarraldo Sep 07, 2010 at 13:36:09 (UTC)
Goto Top
Zitat von @fireron:
Wie kann ich dem Programm sagen, dass es speziell nach "<Login_name="
suchen soll und dann bis zum nächsten Anführungszeichen sich die Namen merkt.
Hier sollten Dir Reguläre Ausdrücke weiterhelfen können. Über Google landet man Treffer mit dem Suchbegriff "regex" oder "regexp".

Grüße,
Fitz
Mitglied: 76109
76109 Sep 07, 2010 at 16:51:24 (UTC)
Goto Top
Hallo Fireron!

Versuchs mal mit diesem VB-Script:
Const TextImport = "E:\Test\Import.Txt"  
Const TextExport = "E:\Test\Export.Txt"  

Dim RE, Matches, Fso, ImportFile, ExportFile, Text

Set RE = New RegExp
Set Fso = CreateObject("Scripting.FileSystemObject")  
    
Set ImportFile = Fso.OpenTextFile(TextImport)
Set ExportFile = Fso.CreateTextFile(TextExport)
    
Text = ImportFile.ReadAll:  ImportFile.Close
    
With RE
   .Global = True
   .IgnoreCase = True
   .Pattern = "<Login_name=""(\w+)"">"  
End With
    
For Each Matches In RE.Execute(Text)
    If Matches.SubMatches.Count = 1 Then ExportFile.WriteLine Matches.SubMatches(0)
Next
    
ExportFile.Close
Die Pfadangaben entsprechen anpassen.

Die Login-Namen dürfen nur alphabetische Zeichen [A-Z] [a-z] [0-9] und Unterstrich enthalten und die Export-Datei wird überschrieben, sofern diese bereits existiert.

Gruß Dieter
Member: fireron
fireron Sep 10, 2010 at 06:12:05 (UTC)
Goto Top
Hallo Dieter,

vielen lieben Dank für das VB-Skript! Echt super, ich habe das Skript angepasst und es funktioniert!

Ich danke dir vielmals!

Viele Grüße,
Tim
Mitglied: 76109
76109 Sep 10, 2010 at 06:34:55 (UTC)
Goto Top
Hallo Tim!

Gern geschehenface-wink Freut mich, wenn's funktioniert.

Den Thread könntest Du noch auf gelöst setzenface-smile

Gruß Dieter
Member: fireron
fireron Sep 10, 2010 at 06:35:34 (UTC)
Goto Top
Nicht ganz. Eine Frage habe ich noch. Wenn ich zum Beispiel möchte, dass folgendes in der Export.txt steht:

(Die Sternchen habe ich nur wegen der Übersichtlichkeit eingefügt; ich meine den Text zwischen den Sternchen)

*
Dies ist die Export.txt. Hier sind alle Benutzer aufgeführt.
Login:Anton
Login:Berta
Login:Caesar
Login:Dora
Das waren die Loginnamen aller Benutzer.
*

Wie kann ich einmalig Text vor und nach den Namen (also ohne Schleife) schreiben und wie kann ich vor und nach jeden Namen Text (mit Schleife) schreiben?

Viele Grüße,
Tim
Mitglied: 76109
76109 Sep 10, 2010 at 07:19:39 (UTC)
Goto Top
Hallo Tim!

Das geht so:
Const TextImport = "E:\Test\Import.Txt"  
Const TextExport = "E:\Test\Export.Txt"  

Dim RE, Matches, Fso, ImportFile, ExportFile, Text

Set RE = New RegExp
Set Fso = CreateObject("Scripting.FileSystemObject")  
    
Set ImportFile = Fso.OpenTextFile(TextImport)
Set ExportFile = Fso.CreateTextFile(TextExport)
    
Text = ImportFile.ReadAll:  ImportFile.Close
    
With RE
   .Global = True
   .IgnoreCase = True
   .Pattern = "<Login_name=""(\w+)"">"  
End With
    
ExportFile.WriteLine "Dies ist die Export.txt. Hier sind alle Benutzer aufgeführt."  

For Each Matches In RE.Execute(Text)
    If Matches.SubMatches.Count = 1 Then ExportFile.WriteLine "Login: " & Matches.SubMatches(0)  
Next
  
ExportFile.WriteLine "Das waren die Loginnamen aller Benutzer."  
  
ExportFile.Close
Texte können einfach mit dem Verkettungsoperator & zusammengefügt werrden z.B. "Text1" & "Text2" & "Text3" usw.

Gruß Dieter
Member: fireron
fireron Sep 10, 2010 at 09:21:58 (UTC)
Goto Top
Dieter, ich danke dir vielmals!

Ein schönes Wochende wünsche ich dir!

Gruß Tim
Mitglied: 76109
76109 Sep 10, 2010 at 10:19:43 (UTC)
Goto Top
Hallo Tim!

Zitat von @fireron:
Dieter, ich danke dir vielmals!
Gern geschehenface-wink
Ein schönes Wochende wünsche ich dir!
Danke, dass wünsche ich Dir auchface-smile

Gruß Dieter