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

Per Batch eine bestimmte Zeichenfolge auslesen

Frage Entwicklung Batch & Shell

Mitglied: ClownUser

ClownUser (Level 1) - Jetzt verbinden

10.09.2010, aktualisiert 17:08 Uhr, 3793 Aufrufe, 9 Kommentare

Guten Abend zusammen.

Ich habe sehr lange nach der Lösung zu meinem Problem gesucht. Dann bin ich au dieses Forum hier gestossen.
Folgendes:

Ich habe eine .txt Datei. Dort steh ganz viel wirres Zeug drin. Und immer wieder versteckt sich in diesem Wirrwar eine Zeichenfolge, die ich in eine Neue .txt Datei kopieren möchte.
Die Zeichenfolge hat immer 6 Zeichen (Zahlen und Buchstaben) und ist links und rechts mindestens von einem Leerschlag umgeben.
Es sollten nur diese Zeichenfolgen ausgelesen werden, die keine kleinen Buchstaben beinhalten. (Oder kann ich per Batch die kleinen Buchstaben zu grossen machen?)
In der neuen Datei sollten die Zeichenfolgen untereinander aufgelistet werden.

Beispiel:

Bestehende Datei:
o 6080.75s 135.00 0.00
o 6080.75s QW309P 0.00 0.00
o 61.75s 0.00 0.00
AK
v 0.00s 0.00 0.00
v 6152.50s 0.00 56HU7E 0.00
v 6152.50s 235.00 0.00
v 6095.75s 4561Z9 235.00 -15.00


Neue erstellte Datei:
QW309P
56HU7E
4561Z9


Kann mir jemand weiterhelfen?
Liebe Grüsse.
ClownUser
Mitglied: bastla
10.09.2010 um 17:03 Uhr
Hallo ClownUser und willkommen im Forum!

Dein Beispiel ist etwas widersprüchlich - wenn nur diese Zeichenfolgen ausgelesen werden, die keine grossen Buchstaben beinhalten, dürfte in der neu erstellten Datei eigentlich keine einzige Zeile stehen ...

Grüße
bastla
Bitte warten ..
Mitglied: ClownUser
10.09.2010 um 17:10 Uhr
Hallo bastla.

Vielen Dank für deine schnelle Antwort.

Genau wie du sagtest. Ich habe natürlich einen Schreibfehler gemacht.
Die neue Datei sollte nur grosse Buchstaben.

lg
Bitte warten ..
Mitglied: bastla
10.09.2010 um 17:13 Uhr
Hallo ClownUser!

String-Verarbeitung ist keine typische Stärke von Batch - daher würde ich hier zu VBS (oder einer Portierung von "sed") greifen - etwa:
01.
Ein = "D:\Deine Datei.txt" 
02.
Aus = "D:\Deine neue Datei.txt" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
T = fso.OpenTextFile(Ein).ReadAll 
06.
 
07.
Set rE = New RegExp 
08.
rE.Global = True 
09.
rE.Pattern = "\b[A-Z0-9]{6}\b" 
10.
 
11.
Set A = fso.CreateTextFile(Aus) 
12.
Set Matches = rE.Execute(T) 
13.
For Each Match In Matches 
14.
    A.WriteLine Match 
15.
Next 
16.
A.Close
Die entscheidende Zeile 9 bedeutet: Suche alle Zeichenketten, die an einer "Wortgrenze" (inkludiert zB auch Zeilenschaltungen) beginnen ("\b"), danach aus dem Bereich "A-Z" sowie "0-9" genau 6 Zeichen enthalten und mit einer weiteren Wortgrenze enden; wolltest Du tatsächlich verlangen, dass die 6 Zeichen von je zumindest einem Leerzeichen begrenzt sind, wären die beiden "\b" durch Leerzeichen zu ersetzen. Ev weitere erlaubte Zeichen (zB Umlaute) könntest Du einfach zwischen den eckigen Klammern hinzufügen ...

Grüße
bastla
Bitte warten ..
Mitglied: ClownUser
10.09.2010 um 17:59 Uhr
Nochmals danke für deine Antwort. Jetzt bin ich aber gerade überfordert. Ich kenne mich leider nur mit Batch Dateien ein Bisschen aus. VBA wüsste ich nicht einmal, was ich mit dem Code machen müsste, oder wie man so eine Datei ausführt...

soory..

Ist mein Vorhaben schwer erreichbar mit Batch?
Ist VBA leicht zu erlernen?

Lg
Bitte warten ..
Mitglied: bastla
10.09.2010 um 18:07 Uhr
Hallo ClownUser!
Ist mein Vorhaben schwer erreichbar mit Batch?
Eher ja ...
Ist VBA leicht zu erlernen?
Kommt darauf an, wen Du fragst ...

Es geht hier aber um VBS (obwohl das auch über VBA funktionieren würde) - daher einfach das Script mit dem Dateityp ".vbs" (zB als "D:\HolMirDieStrings.vbs") speichern (falls Du den Windows-Editor "notepad" verwendest, darauf achten, dass als Dateityp beim Speichern "Alle Dateien" eingestellt ist, da ansonsten ein ".txt" angefügt wird) und per Doppelklick oder mit der Zeile
cscript //nologo D:\HolMirDieStrings.vbs
(es würde, da keine Meldungen ausgegeben werden, sogar
D:\HolMirDieStrings.vbs
genügen) aus einem Batch / von der Kommandozeile starten ...

Grüße
bastla
Bitte warten ..
Mitglied: ClownUser
10.09.2010 um 18:30 Uhr
Ich hab das jetzt mit dem .vbs probiert.
Es funktioniert!
Du bist unglaublich!

Ignoriert dieses Script jetzt alle Zeichenfolgen mit kleinen Buchstaben, oder wandelt es die kleinen in grosse um?

Vielen vielen Dank für deine Hilfe.

lg
Bitte warten ..
Mitglied: bastla
10.09.2010 um 18:46 Uhr
Hallo ClownUser!
Ignoriert dieses Script jetzt alle Zeichenfolgen mit kleinen Buchstaben, oder wandelt es die kleinen in grosse um?
Derzeit wird ignoriert - wenn umgewandelt werden soll, müssten die Zeile 9 auf
rE.Pattern = "\b[A-Za-z0-9]{6}\b" 
und die Zeile 14 auf
A.WriteLine UCase(Match)
geändert werden.

Grüße
bastla
Bitte warten ..
Mitglied: ClownUser
11.09.2010 um 10:45 Uhr
Alles ganz genau so, wie ich wollte. Hätte nie gedacht, dass das machbar ist..
Noch eine kleine Frage:
Kann ich auch anstatt dem Verzeichnis und dem Dateinamen, eine URL angeben?
Oder sogar mehrere?
z.B. so:

...administrator.de/...&page=104
bis
...administrator.de/...&page=318
?


Liebe Grüsse





Edit: Habe gerade gemerkt, dass die URL's nicht ganz angezeigt werden.
Bitte warten ..
Mitglied: bastla
11.09.2010 um 13:57 Uhr
Hallo ClownUser!

Das Script setzt eine vorhandene Textdatei voraus ...

Welchen Zweck hat denn die ganze Aktion?

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...