Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mit VBScript Zeilen mit bestimmten Werten aus TXT-Datei auslesen und in neuer TXT-Datei speichern

Frage Entwicklung VB for Applications

Mitglied: ndb-str

ndb-str (Level 1) - Jetzt verbinden

13.02.2009, aktualisiert 18.10.2012, 12206 Aufrufe, 4 Kommentare

Hallo,
Folgendes Thema würde ich gerne mittels VB Script - nicht mit Batch erledigen
Aus einer TXT.Datei möchte ich Zeilen mit bestimmten Werten, so etwas wie mit find, auslesen und diese dann in einer neuen TXT.Datei abspeichern.
Die übrigen Zeilen, die diesen o.g. Wert nicht enthalten lese ich mit dem Befehl /v ,denk ich mal, ebenfalls aus und will das in einer
zweiten TXT.Datei abspeichern.
Da die beiden TXT.Dateien nicht überschrieben werden sollen, müsste beim Speichern an dem Namen der TXT.Datei das Datum und die Uhrzeit (Std/Min) mit angehängt werden.
Die Ursprungs-TXT.Dateien hat eine erste Zeile (Statuszeile) die bei den beiden neuen TXT.Dateien ebenfalls als erste Zeile enthalten sein soll.
Vielleicht kann man am Anfag des VBScripts eine Abfrage einbauen um die gewünschte TXT.Datei im Explorer auswählen zu können. Ich bedanke mich mal im Voraus für die Hilfe. Evtl. Erklärungen zu den einzelnen Befehlen/Funktionen wären für mich als Einsteiger sehr hilfreich.
ndb-str
Mitglied: bastla
13.02.2009 um 19:41 Uhr
Hallo ndb-str und willkommen im Forum!

Zeilen mit bestimmten Werten
Ist die Mehrzahl bei "Werten" Absicht? Wie sollen diese "Werte" festgelegt werden?

Die übrigen Zeilen
... wären also auch Leerzeilen?

Grüße
bastla
Bitte warten ..
Mitglied: ndb-str
13.02.2009 um 19:53 Uhr
Hallo bastla,
bei den Zeilen handelt es sich mit Semikolon getrennte Werte die später im AD verarbeitet werden. Bestimmte Zeilen mit gleichen Werten sollen ausgelesen werden.
z.B. der Wert 000456789, der Wert 000567890 und der Wert 000654321 kommen jeweils in verschiedenen Zeilen vor. Es sollen nun alle Zeilen, bei den ein Wert, welcher mit 0004 beginnt ausgelesen werden und alle Zeilen die diesen Wert nicht enthalten.

Gruß
ndb-str
Bitte warten ..
Mitglied: bastla
13.02.2009, aktualisiert 18.10.2012
Hallo ndb-str!

Etwas zum Testen:
01.
Suchbegriffe = Array(";0004", "; 0004") 'Alle Zeilen, welche zumindest einen dieser Begriffe enthalten, werden in die "Gefunden"-Datei geschrieben 
02.
 
03.
If WScript.Arguments.Count > 0 Then 'Falls ein Dateipfad beim Aufruf übergeben wurde, ... 
04.
    Ein = WScript.Arguments(0) '... diesen in der Variablen "Ein" speichern. 
05.
Else 'Wurde kein Pfad übergeben, eine Dateiauswahl anbieten (nur für XP) 
06.
    Set Dialog = CreateObject("UserAccounts.CommonDialog")  
07.
    Dialog.Filter = "Textdateien|*.txt|Alle Dateien|*.*" 
08.
    Dialog.ShowOpen  
09.
    Ein = Dialog.FileName  
10.
End If 
11.
 
12.
Set fso = CreateObject("Scripting.FileSystemObject") 'Dateisystemobjekt (für das Arbeiten mit Dateien) erzeugen 
13.
If Not fso.FileExists(Ein) Then 'Pfad überprüfen und ... 
14.
    MsgBox "Keine gültige Datei gewählt!", vbCritical, "Dateifehler!" '... bei ungültigem Pfad Meldung ausgeben sowie ... 
15.
    WScript.Quit '... Script beenden. 
16.
End If 
17.
 
18.
'Pfad der Originaldatei zerlegen 
19.
Dateipfad = fso.GetParentFolderName(Ein) 
20.
If Right(Dateipfad, 1) <> "\" Then Dateipfad = Dateipfad & "\" 'sicher stellen, dass Pfad mit "\" endet 
21.
Dateiname = fso.GetBaseName(Ein) 
22.
Dateityp =  fso.GetExtensionName(Ein) 
23.
 
24.
Zeit = Now 'Zeitpunkt festhalten 
25.
ZeitFormatiert = _ 
26.
Year(Zeit) & _ 
27.
Right("0" & Month(Zeit), 2) & _ 
28.
Right("0" & Day(Zeit), 2) & _ 
29.
"-" & _ 
30.
Right("0" & Hour(Zeit), 2) & _ 
31.
Right("0" & Minute(Zeit), 2) 
32.
 
33.
Gefunden = Dateipfad & Dateiname & "_G_" & ZeitFormatiert & "." & DateiTyp      'Dateiname der "Gefunden"-Datei 
34.
NichtGefunden = Dateipfad & Dateiname & "_N_" & ZeitFormatiert & "." & DateiTyp 'Dateiname der "Nicht gefunden"-Datei 
35.
 
36.
Set G = fso.CreateTextFile(Gefunden, True)      '"Gefunden"-Datei erzeugen 
37.
Set N = fso.CreateTextFile(NichtGefunden, True) '"Nicht gefunden"-Datei erzeugen 
38.
 
39.
T = Split(fso.OpenTextFile(Ein).ReadAll, vbCrLF) 'gesamten Inhalt der Originaldatei zeilenweise in ein Array einlesen 
40.
U = Ubound(T) 'höchsten Index des Arrays ermitteln 
41.
 
42.
G.WriteLine T(0) 'erste Zeile in "Gefunden"-Datei schreiben 
43.
N.WriteLine T(0) 'erste Zeile in "Nicht gefunden"-Datei schreiben 
44.
 
45.
For i = 1 To U 'ab Zeile 2 (= Index 1) alle Zeilen der Originaldatei durchgehen 
46.
    Geschrieben = False 'Schalter, um festzuhalten, ob die Zeile bereits geschrieben wurde 
47.
    For Each Begriff In Suchbegriffe 'alle angegebenen Suchbegriffe durchgehen 
48.
        If InStr(1, T(i), Begriff, vbTextCompare) > 0 Then 'Wenn ein Suchbegriff in der Zeile gefunden wurde, ... 
49.
            G.WriteLine T(i) '... diese in die "Gefunden"-Datei schreiben und ... 
50.
            Geschrieben = True '... die Tatsache, dass die Zeile geschrieben wurde, festhalten sowie ... 
51.
            Exit For '... die Überprüfung auf weitere Suchbegriffe unter- und dazu die Schleife verlassen. 
52.
        End If 
53.
    Next 
54.
    If Not Geschrieben Then N.WriteLine T(i) ' Falls die Zeile noch nicht geschrieben wurde, dann in "Nicht gefunden"-Datei schreiben 
55.
Next 
56.
 
57.
G.Close '"Gefunden"-Datei schließen 
58.
N.Close '"Nicht gefunden"-Datei schließen 
59.
 
60.
MsgBox "Fertig."
Noch zwei Anmerkungen:
Es können mehrere Suchbegriffe verwendet werden (siehe Zeile 1), wobei auf das Vorhandensein (ohne Berücksichtigung von Groß-/Kleinschreibung, was allerdings aufgrund Deines Beispieles nicht relevant ist) des jeweiligen Suchbegriffes irgendwo innerhalb einer Zeile geprüft wird (daher mein Vorschlag mit Einbeziehung des Trennzeiches).

Der Dateiauswahldialog (wird angeboten, wenn beim Aufruf des Scripts keine Datei - auch nicht per Drag & Drop - übergeben wurde) funktioniert nur mit XP - Alternativen in diesem Thread: VBS - Datei auswählen ...

[Edit]
Bei Ersatz der Zeilen 6 bis 9 durch
    Set Dialog = CreateObject("SAFRCFileDlg.FileOpen") 
    If Dialog.OpenFileOpenDlg Then Ein = Dialog.FileName
sollte auch unter W2003 (aber nicht unter Vista) eine Dateiauswahl möglich sein.
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: ndb-str
14.02.2009 um 16:36 Uhr
Hallo bastla,
das ist ein genau das was ich mir vorstelle. Herzlichen Dank dafür.
Werde nun versuchen noch ein paar Kleinigkeiten dazuzubasteln wenn es mir gelingt.
Eventuell werde ich dich dann nochmal um Rat bitten wenn ich irgendwo hängenbleibe.
Nochmal vielen Dank
ndb-str
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Batch & Shell
gelöst In Batchdatei Variablen befüllen - mit Werten aus einer TXT-Datei (6)

Frage von donnyS73lb zum Thema Batch & Shell ...

Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...