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 In txt nur Wort auslesen und dann mit Textfragmenten ergänzen

Mitglied: lalaman

lalaman (Level 1) - Jetzt verbinden

10.02.2008, aktualisiert 18:58 Uhr, 4638 Aufrufe, 10 Kommentare

Guten Morgen allerseits,

habe mich schon ein bisschen über die Sufu durchgesucht aber irgendwie nix wirklich passendes gefunden; also falls ich nicht richtig geguckt hab seht es mir nach.
ich denke dass mein Anliegen nicht besonders schwer/aufregend für euch sein wird:

Ich möchte eine txt (nennen wir sie ganz kreativ Liste.txt) auslesen und ein bestimmtes Wort/Textfragment in einer neuen txt gespeichert aufgelistet dannach auffinden (nennen wir sie Ergebnis.txt). Das Wort hat nach seinem immer gleichbleibenden Anfang immer 2 - 5 variierende Zahlen:

Bsp:

Datei=?1273
Datei=?17345
Datei=?523
Datei=?10
...

wobei der erste Teil wie gesagt immer gleichbleibt (Datei=?). Die Worte sind in Fließtext eingearbeitet. Ich habe mit findstr schon rumprobiert aber bekomme immer nur die ganze Zeile aufgelistet jedoch möchte ich nur das Wort/Textfragment haben.

Wenn diese Liste dann erstellt ist soll im zweiten Schritt ein neues Fragment vor jede Zeile in der Ergebnis Liste gesetzt werden. Bsp "Batch" - Dass ich hinterher eine Liste mit den Ausdrücken

BatchDatei=?1273
BatchDatei=?17345
BatchDatei=?523
BatchDatei=?10
...

habe. Ich hoffe das war einigermaßen verständlich; wäre dankbar wenn mir geholfen würde.

Gruß
lalaman
Mitglied: bastla
10.02.2008 um 17:08 Uhr
Hallo lalaman und willkommen im Forum!

Aufgrund Deiner Beschreibung bleiben noch Fragen offen:

- Stellt der Suchbegriff immer ein eigenes Wort dar, oder soll er auch als Wortbestandteil (zB in "BatchDatei=?1273") gefunden werden?
- Sollen nur solche Einträge gefunden werden, bei welchen nach dem Suchbegriff "Datei=?" ausschließlich "2 - 5 variierende Zahlen" (eher Ziffern) folgen, bzw stellt auch die Anzahl dieser Ziffern ein Kriterium dar (also: mehr oder weniger Ziffern wären nicht zulässig)?
- Welches Zeichen ist nach der letzten Ziffer zu erwarten: Leerzeichen, Satzzeichen, unbekannt?

Ein erster Ansatz, allerdings nicht in Batch, sondern in VBScript, könnte jedenfalls so aussehen:
01.
Const Liste = "D:\Liste.txt" 
02.
Const Ergeb = "D:\Ergebnis.txt" 
03.
Const Muster = "Datei=\?\d+" 
04.
Const Prefix = "Batch" 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
Inhalt = fso.OpenTextFile(Liste, 1).ReadAll 
08.
 
09.
Set regAusdr = New RegExp	' Erstellt einen regulären Ausdruck. 
10.
regAusdr.Pattern = Muster	' Setzt das Muster. 
11.
regAusdr.IgnoreCase = True	' Unterscheidet nicht zwischen Groß- und Kleinschreibung 
12.
regAusdr.Global = True		' Sucht alle Vorkommen 
13.
 
14.
Set Uebereinstimmungen = regAusdr.Execute(Inhalt)	' Führt die Suche aus. 
15.
For Each Uebereinstimmung in Uebereinstimmungen		' Durchläuft die Übereinstimmungen. 
16.
	Ergebnis = Ergebnis & Prefix & Uebereinstimmung.Value & vbCRLF 
17.
Next 
18.
 
19.
fso.CreateTextFile(Ergeb, True).Write Ergebnis
Speichere das Script zb unter "C:\Scripts\FindeTextUndErstelleListe.vbs". Falls Du den Windows-Editor verwendest, musst Du entweder vor dem Speichen den Dateityp auf "Alle Dateien" setzen oder den Dateinamen unter Anführungszeichen eingeben, da ansonsten der Typ ".txt" angehängt wird.

Das Script kannst Du per Doppelklick oder aus einem Batch mit
01.
cscript //nologo "C:\Scripts\FindeTextUndErstelleListe.vbs"
starten.

Gefunden werden alle Vorkommen von "Datei=?#", wobei # für mindestens eine Ziffer steht (Anzahl ansonsten egal) und der Suchbegriff nicht auch als Wortbestandteil gefunden wird.

Grüße
bastla
Bitte warten ..
Mitglied: lalaman
10.02.2008 um 17:08 Uhr
Ok den ersten Teil hab ich jetzt schon selbst gelöst...Brauch jetzt nur noch einen Tip für eine Batch die bei X-beliebigen Zeilen einer TXT einen bestimmten Ausdruck vor jede Zeile einer bereits vorhandenen Liste setzt...also wie im ersten Post mit der zweiten Liste angegeben.
Wäre sehr dankbar wenn jemand eine Möglichkeit wüsste

Gruß

Edit...: Huch sorry hatte den Post von bastla gar nicht bemerkt...mal öfter die F5 Taste drücken könnte helfen.
Bitte warten ..
Mitglied: bastla
10.02.2008 um 17:15 Uhr
Hallo lalaman!

Ok den ersten Teil hab ich jetzt schon selbst gelöst
Magst Du Deine Lösung vorstellen?

bei X-beliebigen Zeilen einer TXT einen bestimmten Ausdruck vor jede Zeile einer bereits vorhandenen Liste ...
... bekommst Du etwa so:
01.
@echo off & setlocal 
02.
set "Liste=D:\Liste.txt" 
03.
set "Prefix=Batch" 
04.
 
05.
set "Bak=%Liste%.bak" 
06.
 
07.
move "%Liste%" "%Bak%" 
08.
for /f "usebackq delims=" %%i in ("%Bak%") do echo %Prefix%%%i>>"%Liste%"
Die Originaldatei wird als Sicherungskopie unter "Originalname.bak" gespeichert und die neue Version erhält den Namen der Originaldatei.

Grüße
bastla

P.S.:
hatte den Post von bastla gar nicht bemerkt.
Stand ja auch schon ewig lange (seit 17:08:25 Uhr) dort ...
Bitte warten ..
Mitglied: lalaman
10.02.2008 um 17:39 Uhr
Also zu den offenen Fragen:

Der Ausdruck stellt kein eigenes Wort dar; er ist in fließenden Text integriert.
Noch ein Bsp.

XYZhgkhlk"Datei=?12335"XYZtvbnvbnvbnext
XYZtexsdfsd"Datei=?87238"XYfghfghfgxttext<>
XYZtasdsxt<>"Datei=?45"Xegfghtexttwewert>
XYZ<xc<yx<>"Datei=?847"YZtsadxssdxt<

Dieser Teil: "Datei=?" ist immer gleich und dahinter befinden sich bis zu 5 Ziffern, die eben variieren. Meinetwegen alle möglichen Zahlen von 1 bis 99999.
Der Ausdruck den ich suche ist immer in "" gesetzt allerdings sind auch noch andere Begriffe in "" gesetzt, also könnte das als alleiniges Suchkriterium nicht genutzt werden.

Ich möchte in meiner Liste (TXT) hinterher haben:

Datei=?12335
Datei=?87238
Datei=?45
Datei=?847

Man müsste also einen Suchlauf nach suche:

"Datei=?....."
"Datei=?...."
"Datei=?..."
"Datei=?.."
"Datei=?."

starten, wobei die Punkte für beliebige Zahlen (oder Ziffern) stehen.
Ich habe inzwischen ein Programm gefunden (TextSTAT) womit ich die Textteile mehr oder weniger komfortabel Filtern kann somit wäre dieser erste Teil, wenn er als Script zu viel Aufwand bedeuten würde, nicht mehr unbedingt wichtig.

Viel mehr fehlt mir noch Teil 2, wofür ich bis jetzt keine Lösung gefunden hab:

aus meiner Liste als TXT in der nichts anderes drinsteht als diese Ausdrücke:

Datei=?12335
Datei=?87238
Datei=?45
Datei=?847

automatisch jeweils an den Anfang jeder Zeile einen weiteren Ausdruck (ohne Leertaste dazwischen) einzuschieben und daraus dann eine solche Liste werden zu lassen:

BatchDatei=?12335
BatchDatei=?87238
BatchDatei=?45
BatchDatei=?847

ps vielen danke für die freundliche Begrüßung hier im Board. Für Batch Probleme schon immer meine absolute lieblingsseite. Aber wie gesagt hierzu hab ich nichts gefunden.

Gruß
lalaman
Bitte warten ..
Mitglied: bastla
10.02.2008 um 17:45 Uhr
Hallo lalaman!

Der Ausdruck stellt kein eigenes Wort dar; er ist in fließenden Text integriert.
Ich passe die VBS-Version oben entsprechend an.

Zu Teil 2 hatte ich auch schon eine Idee ...

Grüße
bastla
Bitte warten ..
Mitglied: lalaman
10.02.2008 um 17:52 Uhr
Super...der zweite Teil hat funktioniert! Genau so wie ich mir das gedacht hatte.

Lösung vorstellen ist wohl ein klein wenig übertrieben. Ich gebe zu die Benutzung eines Tools ist diesbezüglich weniger spannend oder kreativ, aber dafür reichen meine Kenntnisse leider nicht aus.
Da es eine relativ große Textmasse ist die ich filtern möchte, auf jeden fall eine Erleichterung...wenn deine vbs-Lösung jetzt natürlich noch funktionieren sollte wär ich hin und weg

Ich bin im Übrigen immer wieder positiv überrascht über den schnellen Support, den man hier bekommt; auch in anderen Threads ist zumeist 1 Stunde später spätestens eine Lösung da

P.S.
Wie du schon richtig bemerkt hast bin ich neu (-angemeldet) hier und habe schon des Öfteren von dem "grünen häkchen" bei "erledigt" gelesen...wo aktiviere ich den denn? Vermutlich seh ich den Wald vor lauter Bäumen nicht ;)
Bitte warten ..
Mitglied: bastla
10.02.2008 um 18:01 Uhr
Hallo lalaman!

Sehr lobenswert, dass Du daran gedacht hast: https://www.administrator.de/index.php?faq=32

Noch eine Anmerkung zum VBScript: Wenn Du
01.
Const Muster = "Datei=\?\d{1,5}"
verwendest, werden nur genau 1 bis 5 Ziffern gefunden.

Grüße
bastla
Bitte warten ..
Mitglied: lalaman
10.02.2008 um 18:24 Uhr
Klappt super mit der vbs, nur noch mal eine Frage wegen den Sonderzeichen in dem Zusammenhang. Ich könnte diesen Suchlauf auch für andere Ausdrücke ganz gut gebrauchen. Wie müsste es z.B. bei

Datei.php?id=1-5 Ziffern


aussehen?


Const Muster = "Datei.php\?\id=d{1,5}"

funktioniert leider nicht.

Vielen Dank schon-/nochmal für die super Hilfe!!!

Gruß
Bitte warten ..
Mitglied: bastla
10.02.2008 um 18:37 Uhr
Hallo lalaman!

Da der Punkt eine besondere Bedeutung hat, musst Du auch diesen "maskieren":
01.
Const Muster = "Datei\.php\?id=\d{1,5}"
Mit "\d" wird eine Ziffer beschrieben - insoferne war noch eine weitere kleine Korektur erforderlich.

Eine Übersicht über die möglichen Suchmuster findest Du hier.

Grüße
bastla
Bitte warten ..
Mitglied: lalaman
10.02.2008 um 18:58 Uhr
Jetzt ist es perfekt. Vielen Dank nochmal
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Textdatei (.txt) Wort für Wort auslesen per batch (Spaltenweise)

Frage von pdiddoBatch & Shell1 Kommentar

Hi, ich habe eine Textdatei (.txt). Diese hat mehrere Zeilen. Ich möchte diese gerne Spalte für Spalte auslesen, sodass ...

Batch & Shell

Batch mit for txt auslesen?

gelöst Frage von Mohji32Batch & Shell4 Kommentare

Hallo, ich habe mir den "Grundkurs" zu for schleifen im Board angeschaut aber leider nicht das hin bekommen was ...

Batch & Shell

Mit Batch .txt auslesen und benutzen

gelöst Frage von GhostJumperHDBatch & Shell8 Kommentare

Ich habe folgendes Problem Ich möchte das W-Lan überlasten und möchte danach die .bat zur .exe umwandeln. Ich möchte ...

Batch & Shell

Txt auslesen zähler hinzufügen

gelöst Frage von NewNoobBatch & Shell9 Kommentare

Und zwar möchte ich eine batch schreiben in dem ich alle verknüpfungen suche und dann lösche ausser in bestimmten ...

Neue Wissensbeiträge
Backup

2016 - Restore mit WBAdmin - iSCSI Device als Sicherungsziel

Erfahrungsbericht von Henere vor 2 TagenBackup1 Kommentar

Servus zusammen, was mich eben einige graue Haare gekostet hat Server 2016. Ich habe meinem Server eine weitere M2 ...

Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 4 TagenHumor (lol)10 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 4 TagenExchange Server9 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 5 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Heiß diskutierte Inhalte
E-Mail
Deutsche e-Mail Adresse auf iPhone in Katar. Nur Probleme
gelöst Frage von vanTastE-Mail32 Kommentare

Moin, ich habe hier in Deutschland auf einem Exchange 2013 eine e-Mail Adresse (name@domain.de) für einen Kollegen in Katar ...

Windows Server
Domäne beitreten nicht möglich, unter VMWare windows Server 2016 Core
Frage von AmanuelWindows Server21 Kommentare

Ich habe auf meinem Mac unter VMWare Windows Server 2016 Core und Windows Server 2016 Desktopversion installiert. Beide Systeme ...

Windows Server
Server verliert Dateien und Ordner
gelöst Frage von routeserverWindows Server18 Kommentare

Hallo Freunde, ich habe hier ein Problem, das mich an meine Grenzen treibt und ich würde gerne wissen, ob ...

Windows Tools
User Self Service und Client Management
Frage von OrkansonWindows Tools14 Kommentare

Hallo zusammen, ich hab ein paar verschiedene Fragen: 1. Was benutzt ihr um Software im Unternehmen zu verteilen? 2. ...