Klammern und Inhalt der Klammern aus einem Text entfernen per Batch
Hey,
ich habe mal wieder ein Problem und zwar habe ich diesmal eine Text Datei wo die Klammern +Inahlt entfernt werden sollen.
Die Klammern bekommen ich entfern aber ich weiß nicht wie ich dazu noch den Inhalt entfernt bekomme.
Also die Texte Datei sieht ungefähr so aus:
Error (Fehlercode 5825) Probleme mit...
Fail [error 458d4] user...
Fail [error 458d4 drtd] user...
Nacher möchte ch alt nur noch so eine Textdatei haben:
Error Probleme mit...
Fail user...
Ich hoffe ihr könnt mir helfen
LG Thomas0204
ich habe mal wieder ein Problem und zwar habe ich diesmal eine Text Datei wo die Klammern +Inahlt entfernt werden sollen.
Die Klammern bekommen ich entfern aber ich weiß nicht wie ich dazu noch den Inhalt entfernt bekomme.
Also die Texte Datei sieht ungefähr so aus:
Error (Fehlercode 5825) Probleme mit...
Fail [error 458d4] user...
Fail [error 458d4 drtd] user...
Nacher möchte ch alt nur noch so eine Textdatei haben:
Error Probleme mit...
Fail user...
Ich hoffe ihr könnt mir helfen
LG Thomas0204
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 175112
Url: https://administrator.de/contentid/175112
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
3 Kommentare
Neuester Kommentar
Aloha,
leider habe ich momentan nicht wirklich Zeit, daher nur ein halboptimaler Vorschlag von mir jetzt:
in der Annahme, dass () auch nur in den Fehlercodes vorkommen ...
halboptimal deshalb, weil du jetzt zwei Leerzeichen bekommst
... aber vielleicht schaffst du es ja, es selbst noch zum Optimalen hinzubauen (mit einem Unterprogramm)
greetz André
leider habe ich momentan nicht wirklich Zeit, daher nur ein halboptimaler Vorschlag von mir jetzt:
for /f "usebackq tokens=1,2,* delims=()" %%s in ("E:\Skripte\datei.log") do >>"E:\Skripte\Ausgabe.txt" echo %%s%%u
halboptimal deshalb, weil du jetzt zwei Leerzeichen bekommst
Error Probleme mit ...
... aber vielleicht schaffst du es ja, es selbst noch zum Optimalen hinzubauen (mit einem Unterprogramm)
greetz André
Hallo Thomas0204,
ich rate zu einem VBScript. Das Bearbeiten von Dateien mit beliebigem Inhalt gehört nicht zu den Stärken von Batchscript. Es gibt einige Zeichen, die den Batchinterpreter bei der Verarbeitung durcheinander bringen.
Teste mal das hier:
Zeile 2 und 3 musst Du anpassen, den Code als VBS-Datei speichern und das Script dann folgendermaßen starten:
Gruß
Friemler
ich rate zu einem VBScript. Das Bearbeiten von Dateien mit beliebigem Inhalt gehört nicht zu den Stärken von Batchscript. Es gibt einige Zeichen, die den Batchinterpreter bei der Verarbeitung durcheinander bringen.
Teste mal das hier:
'Ein- und Ausgabedatei hier eintragen
strInFile = "Test.txt"
strOutFile = "Test neu.txt"
'Alle Arten von Klammern
arrBrackets = Array("()", "", "{}", "<>")
Const ForReading = 1
'Das Klammer-Array tauglich machen
'als Suchmuster für Reguläre Ausdrücke.
'.* steht für alle Zeichen, die zwischen
'den Klammern stehen, die Klammern
'müssen mit \ escaped werden, da sie
'zur Syntax von Regulären Ausdrücken gehören.
' {0,1} bewirkt, dass zusätzlich zu der zu
'löschenden Klammer auch noch EIN
'nachfolgendes Leerzeichen gelöscht wird,
'wenn es denn vorhanden ist.
For I = 0 To UBound(arrBrackets)
arrBrackets(I) = Replace(arrBrackets(I), "()", "\(.*\) {0,1}")
arrBrackets(I) = Replace(arrBrackets(I), "", "\[.*\] {0,1}")
arrBrackets(I) = Replace(arrBrackets(I), "{}", "\{.*\} {0,1}")
arrBrackets(I) = Replace(arrBrackets(I), "<>", "<.*> {0,1}")
Next
'Dateisystemobjekt erzeugen
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Eingabedatei öffnen, auslesen und wieder schließen
Set objInFile = objFSO.OpenTextFile(strInFile, ForReading, False)
strContent = objInFile.ReadAll
objInFile.Close
'Objekt für Reguläre Ausdrücke erzeugen und einstellen,
'dass alle Fundstellen berücksichtigt werden sollen
Set objRegExp = New RegExp
objRegExp.Global = True
'Alle Klammerarten suchen und ersetzen
For Each strBrackets In arrBrackets
objRegExp.Pattern = strBrackets
strContent = objRegExp.Replace(strContent, "")
Next
'Ausgabedatei öffnen und
'den veränderten Dateiinhalt in neue Datei schreiben
'Ausgabedatei schließen
Set objOutFile = objFSO.CreateTextFile(strOutFile, True)
objOutFile.Write strContent
objOutFile.Close
Zeile 2 und 3 musst Du anpassen, den Code als VBS-Datei speichern und das Script dann folgendermaßen starten:
cscript /nologo "PfadUndNameDesScripts.vbs"
Gruß
Friemler