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)

Mitglied: Gurkenhobel

Gurkenhobel (Level 1) - Jetzt verbinden

06.11.2013 um 20:35 Uhr, 5142 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

VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen)

gelöst Frage von Luuke257Batch & Shell5 Kommentare

Hallo zusammen! Vorweg, ich bin absoluter neuling im Scripten, ich habe mir das alles nur so zusammengebastelt und versuche ...

VB for Applications

Mit VBS mehrere Links aus Textdatei öffnen

gelöst Frage von Privex007VB for Applications4 Kommentare

Hallo zusammen, ich würde gerne wissen, wie ich es anstelle das ich per VBS eine separate Textdatei öffnen kann ...

Visual Studio

VBS schreibt bestimmte Variable nicht in Textdatei

gelöst Frage von SaschaaaaaVisual Studio11 Kommentare

Hallo Community, kann gut sein das in dem Script ein paar mehr Fehler sind. Mir geht es aber aktuell ...

Batch & Shell

Wert aus Registry in Textdatei speichern - Batch oder VBS

gelöst Frage von ResolvBatch & Shell2 Kommentare

Hallo in die Runde, ich habe es leider nicht so mit Batch und Co. Ich würde gerne die letzen ...

Neue Wissensbeiträge
Windows 10

Windows 10 - Programme laufen schneller, wenn Sie mit Administratorrechten ausgeführt werden

Erfahrungsbericht von 1Werner1 vor 14 StundenWindows 106 Kommentare

Moin, das wollte ich erst nicht glauben, aber es ist so. Wenn Ihr ein Programm mit Administratorrechten unter Windows ...

Sicherheits-Tools
Putty hat heftige Bugs korrigiert!
Information von Lochkartenstanzer vor 1 TagSicherheits-Tools5 Kommentare

Moin, Wie man aus herauslesen kann, sind in den Versionen vor 0.71 gravierende Bugs, die es angeraten erscheinen lassen, ...

Off Topic
Sachen die die Welt nicht braucht - Platz 1
Tipp von brammer vor 4 TagenOff Topic21 Kommentare

Hallo, ich habs als Tipp angelegt als Erfahrungsbericht nein Danke brammer

Humor (lol)
Spirit of Health-Kongress in Berlin
Information von AnkhMorpork vor 4 TagenHumor (lol)6 Kommentare

tgif! Beim dritten Spirit of Health-Kongress trafen sich am Wochenende Alternativmediziner und Naturheilkundler im Maritim Hotel Berlin, um sich ...

Heiß diskutierte Inhalte
Hardware
Telefonanlagen - Welche gibt es
Frage von Xaero1982Hardware21 Kommentare

Nabend Zusammen, ich suche eine neue TK Anlage und mein Auftraggeber will jetzt was völlig neues - State of ...

Windows Server
Eingeschränkte Gruppen - Spezielle Benutzergruppe hinzufügen
Frage von killtecWindows Server17 Kommentare

Hallo, ich möchte gerne folgendes Realisieren: Ich habe bei mir Eingeschränkte Gruppen via GPO aktiv und möchte nun der ...

LAN, WAN, Wireless
Intel(R) PRO Wireless 3945ABG
gelöst Frage von Leon509LAN, WAN, Wireless15 Kommentare

Hallo, habe ein Laptop Fujitsu (Intel, 4GB, 2GHz, Windos10, Intel(R) PRO/Wireless 3945ABG ) ein O2 DSL Anschluss Home50. Leider ...

Microsoft Office
Videodateien auf Windows Server 2008 R2 öffnen schlägt fehl
Frage von SchroediMicrosoft Office14 Kommentare

Hallo zusammen, wir haben das Problem das embedded Videos in PowerPoint (O365) auf unserer Citrix Farm (6.5) nicht abgespielt ...