Top-Themen

Aktuelle Themen (A bis Z)

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

VBS - Zeilen aus Textdatei auslesen (regelm. Reihenfolge)

Frage Entwicklung VB for Applications

Mitglied: Gurkenhobel

Gurkenhobel (Level 1) - Jetzt verbinden

06.11.2013 um 20:35 Uhr, 4159 Aufrufe, 10 Kommentare, 2 Danke

Hallo,
wiedereinmal wird Hilfe benötigt und ich darf mich schon im voraus dafür bedanken.

Wie kann ich aus einer simplen Textdatei immer eine bestimmte Anzahl Zeilen auslesen und in eine neue Datei schreiben ?
In der Beispieldatei wären dies die Zeilen 3, 5, 8, 10, 13, 15 ... also im Wechsel 1 bzw. 2 Leerzeilen dazwischen, beginnend ab Zeile 3.


August 
31 
Zeile 3 
blabla 4 
Zeile 5 
blablabla 6 
30 
Zeile 8 
blablabla 9 
Zeile 10 
Blabla 11 
29 
Zeile 13 
blabla 14 
Zeile 15 
blabla 16 
28 
...
Ich freue mich auf Antwprten
Micha
Mitglied: Biber
06.11.2013, aktualisiert um 22:53 Uhr
Moin Gurkenhobel,

ein VBSkript geht mir ja nicht so flott wie ein Batch-Einzeiler.
Deshalb poste ich diesen - der Algorithmus lässt sich sicherlich auch als VBS umsetzen.

Deinen Beispieltext oben würde ich bei mir am CMD (wo DelayedExpansion per HKCU-Eintrag immer aktiviert ist) so abfackeln:
biber$@(for /f "delims=: tokens=1,*" %a in ('findstr /n $ beispieltext.txt') do @(set /a x=%a %10)>nul & @(for %i in (0 3 5 8) do @if !x!==%i @echo %b) 
Zeile 3 
Zeile 5 
Zeile 8 
Zeile 10 
Zeile 13 
Zeile 15
"biber$" ist mein Prompt, der Oneliner geht also mit "@(for...." los

Bedeutet:
  • Ich lasse per "Findstr /n $" alle Zeilen von Beispieltext.txt mit Zeilennummer ausgeben
  • wenn die Zeilennummer MOD 10 gleich 0, 3, 5 oder 8 ist, dann gebe ich es aus
  • fertig

Grüße
Biber
Bitte warten ..
Mitglied: TsukiSan
07.11.2013 um 04:02 Uhr
Hallo Gurkenhobel,

wie Biber schon bemerkt hat, geht das mit Batch mit viel weniger Zeilen.
Aber da du nach VBS gefragt hast, hier ein Beispiel:

01.
Set FSO = CreateObject("Scripting.FileSystemObject") 
02.
AlleZeilen = Split(FSO.OpenTextFile("Zeilen.txt",1).ReadAll,vbcrlf) 
03.
For i = 0 to Ubound(AlleZeilen) - 1 
04.
	a = i mod(10) 
05.
	if a = 2 or a = 4 or a = 7 or a = 9 then 
06.
		ZeilenEinzel = ZeilenEinzel & AlleZeilen(i) & vbcrlf 
07.
	end if 
08.
Next 
09.
 
10.
FSO.CreateTextFile("Zeilen-gefiltert.txt",true).Write (ZeilenEinzel)
In der 5ten Zeile müsstest du eventuell deine Zeilennummern anpassen (Achtung! fängt mit NULL an zu zählen).

Gruss

Tsuki
Bitte warten ..
Mitglied: Gurkenhobel
07.11.2013 um 12:09 Uhr
Mahlzeit Biber,

danke für die Überlegung. Aber das Batch bringt im Echo keine Ergebnisse (liegt wohl an dem DelayedExpansion in der Registry). Ich bin auch nicht so der "Batchmensch".
Bei deiner Batchdatei müsste ich ja die Zeilen alle einzeln angeben (... for %i in (0 3 5 8 10 13 15 18 20 ..) und so bringt auch die Umleitung (pipe) in eine Datei nix.
Bei VBS oder VBA ist für mich etwas nachvollziehbarer und so bevorzuge ich halt diese Variante.
Danke trotzdem

Grüße
GH
Bitte warten ..
Mitglied: Gurkenhobel
07.11.2013 um 12:26 Uhr
Hallo TsukiSan,

danke für Dein morgentliches Script, das zur vollsten Zufriedenheit funktioniert. Auch ohne Anpassung der Zeile 5 wurden alle 158 Zeilen bearbeitet und die gewünschten ausgelesen und "exportiert".

どうもありがとう

Beste Grüße
GH
Bitte warten ..
Mitglied: Biber
07.11.2013, aktualisiert um 22:29 Uhr
Moin Gurkenhobel,

meine Batch-CMD-Zeile war ja nur gedacht als proof of concept für den - ich nenne es mal übertrieben "Algorithmus".

Als Batch, den du auch ohne spezielle Registry-Änderungen bei dir ausführen kannsr, sähe der (ungetestet) so aus:
01.
@echo off & setlocal EnableDelayedExpansion 
02.
for /f "delims=: tokens=1,*" %%a in ('findstr /n $ beispieltext.txt') do ( 
03.
   set /a x=%%a %% 10  >nul  
04.
    for %%i in (0 3 5 8) do if !x!==%%i echo %%b 
05.
)
Und nein, ich muss nicht jede Zeile einzeln angeben nach dem Muster ". for %i in (0 3 5 8 10 13 15 18 20 ..) ".

Grüße
Biber
Bitte warten ..
Mitglied: Gurkenhobel
07.11.2013 um 20:17 Uhr
Hi Biber,

ja die Ausgabe klappt jetzt schnell - aber das Umleiten in eine Datei klappt nicht. Weder vor noch nach der abschließenden Klammer bringt "> export.txt" nur eine Zeilein die Datei.

Grüße
GH
Bitte warten ..
Mitglied: Biber
07.11.2013, aktualisiert um 22:31 Uhr
Moin Gurkenhobel,

zwei von vielen Möglichkeiten:

a) wenn du die Batchdatei von einem CMD-Prompt aufrufst (also bespielsweise "FilterText" eingibst, weil die Datei bei dir Filtertext.cmd heisst und im aktuellen Verzeichnis liegt) und dort die Ausgabe so aussieht, wie du sie in ein einer Datei haben willst: dann gib ein
FilterText>d:\temp\GefilterterExport.txt
, um das Ergebnis in eine Datei umzuleiten. Hat den Vorteil, dass du beim Aufruf ohne zusätzlichen Parameter erst mal das Ergebnis auf dem Monitor anschauen kannst und erst dann in einem zweiten Schritt das Ergebnis festschreibst.

b) wenn du ohne Parameter arbeiten willst und das Ziel immer in eine Datei "D:\temp\GefilterterExport.Txt" geschrieben werden soll, dann füge als neue Zeile 2 ein
">D:\temp\GefilterterExport.Txt (" und hänge in der letzten Zeile eine Klammer-Zu an:

01.
:: --- abspeichern als Plaintext mit Endung .bat./cmd 
02.
@echo off & setlocal EnableDelayedExpansion 
03.
>D:\temp\GefilterterExport.Txt ( 
04.
for /f "delims=: tokens=1,*" %%a in ('findstr /n $ beispieltext.txt') do ( 
05.
   set /a x=%%a %% 10  >nul  
06.
    for %%i in (0 3 5 8) do if !x!==%%i echo %%b 
07.
))


Auch diesmal wieder ungetestet.

Grüße
Biber
Bitte warten ..
Mitglied: Gurkenhobel
07.11.2013 um 22:08 Uhr
Hallo Biber,

klappt alles beides wunderbar. Vielen Dank,
werde mich wohl für die Variante a mit der Umleitung auf Konsolenebene (Kommandozeilenebene) entscheiden.

Schön' Abend noch und Betse Grüße
Gurkenhobel
Bitte warten ..
Mitglied: TsukiSan
08.11.2013 um 00:33 Uhr
どうもありがとう

こちらこそ

Ps.: Das soll jetzt aber kein japanisches Forum werden

よろしく おねがいします

Tsuki
Bitte warten ..
Mitglied: Gurkenhobel
08.11.2013 um 12:54 Uhr
NEIN, natürlich nicht...

kann ja eh' k(aum )einer lesen.

GH

ENDE ----------------------------
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Textdatei Zeile für Zeile auslesen
Frage von RIPUEDBatch & Shell

Hallo, ich würde gerne mit einem Batch-Skript Zeilen aus einer Textdatei einzeln und nacheinander auslesen und diese dann nach ...

VB for Applications
VBS-Entfernen von Zeilen in einer Textdatei
Frage von Calim3roVB for Applications5 Kommentare

Hallo zusammen Ich möchte aus einer Textdatei Zeilen entfernen. Ich habe drei Dateien, in Datei "A" stehen Wörter, in ...

Batch & Shell
Komplette Zeile aus Textdatei auslesen
gelöst Frage von tegwertBatch & Shell3 Kommentare

Hallo zusammen! Ich möchte aus einer Textdatei immer die Zeile 4 auslesen und dessen Inhalt in eine Variable übernehmen. ...

Batch & Shell
Bestimmte Zeile einer Textdatei mit Batch auslesen
gelöst Frage von PinkFLuffyUnicornBatch & Shell2 Kommentare

Hi, ich habe ein kleines Batch Script, welches mir den Status der Firewall ausgeben soll(ob an oder aus) der ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 5 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 16 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 18 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner4 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...