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, 3803 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Win7-Batch - bestimmte Ordner in TEMP löschen (1)

Frage von jan99 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: Textdatei Zeilenweise auslesen (2)

Frage von CreatorX zum Thema Batch & Shell ...

Batch & Shell
gelöst Bestimmte Zeile einer Textdatei mit Batch auslesen (2)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (50)

Frage von sabines zum Thema Internet ...

Netzwerke
LAN2LAN Verbindung sehr langsam flaschenhals gesucht (27)

Frage von PixL86 zum Thema Netzwerke ...

Router & Routing
PFsense - Netzverbindung steht, aber kein Internet vorhanden (24)

Frage von aschmid zum Thema Router & Routing ...

Windows Server
gelöst Windows 2016 Hyper-V und VHDS (19)

Frage von emeriks zum Thema Windows Server ...