
130834
27.02.2017
Zeilenumbruch-Zeilen-Vorschub entfernen? (Batch)
Hallo Leute,
Ich bin's wieder, mit einem verzwickten Problem.
Und ich hab folgendes Problem...
Ich habe eine riesige Logfile ( nicht wirklich, aber für Verarbeitungs-Verhältnisse ), ungefähr 4 MB / 30'000 Linien welche ungünstig Formatierten Text enthält.
Die Logfile wird durch diesen Befehl erzeugt;
Eine Linie des Logs sieht etwa so aus:
(6 Tabs)(2 Leerzeichen zwischen dem 2 und 3 Tab)DATEIPFAD(Un-identifizierbare ASCII/HEX Charakter)100%
Nun würde ich gerne diese Datei in nur
DATEIPFAD
Verwurschteln.
Das Problem dabei ist nur, die Un-identifizierbaren Charakter,
meiner Recherche Zufolge HEX: 0D und 0A versalzt mir den Braten.
Der Normale Editor zeigt diese Charakter nicht an.
CMD / Batch verwendet diese Charakter wie einen Carriage Return Charakter.
NotePad++ und eine C# Console App verwenden diese Charakter als Zeilenumbruch.
Ich habe es sogar hingekriegt eine Stand-alone C# App zu machen welche mir den Text formatiert.
Der Code;
Da habe ich das Problem das der Code gefühlt noch langsamer als eine Batch ist. ( Und auch werden Umlaute Trotz Encoding .. nicht richtig geschrieben? )
Google gibt mir dazu nicht wirklich etwas an...
Die Charaktere um die es geht wird bei suche danach als Line feed und Carriage Return angegeben.
Ich würde diese Charakter gerne loswerden, ebenso die Leerzeichen und die Tabs.
Die Leerzeichen kann ich leider nicht einfach im ganzen String ersetzten, da der Pfad ja ein Leerzeichen enthalten könnte.
Wie bekomme ich jetzt aus diesem Chaos nur den Pfad heraus?
Die Aufgabe ist nicht einmalig, muss also automatisiert sein.
Hier noch ein Bild von NotePad++ und Editor beim anzeigen der Zeichen.
Ich bin dankbar für jede Hilfe!
Schönen Abend noch,
lg clragon
PS:
(Paste der Zeichen mit "", keine Ahnung ob das Forum sie zerstört)
"
"
Ich bin's wieder, mit einem verzwickten Problem.
Und ich hab folgendes Problem...
Ich habe eine riesige Logfile ( nicht wirklich, aber für Verarbeitungs-Verhältnisse ), ungefähr 4 MB / 30'000 Linien welche ungünstig Formatierten Text enthält.
Die Logfile wird durch diesen Befehl erzeugt;
robocopy C:\. NULL *.txt /mt 5 /xd "*microsoft*" "*windows*" /l /s /ndl /xx /nc /ns /njh /njs /fp /log+:"%temp%\eineDatei.txt"
Eine Linie des Logs sieht etwa so aus:
(6 Tabs)(2 Leerzeichen zwischen dem 2 und 3 Tab)DATEIPFAD(Un-identifizierbare ASCII/HEX Charakter)100%
Nun würde ich gerne diese Datei in nur
DATEIPFAD
Verwurschteln.
Das Problem dabei ist nur, die Un-identifizierbaren Charakter,
meiner Recherche Zufolge HEX: 0D und 0A versalzt mir den Braten.
Der Normale Editor zeigt diese Charakter nicht an.
CMD / Batch verwendet diese Charakter wie einen Carriage Return Charakter.
NotePad++ und eine C# Console App verwenden diese Charakter als Zeilenumbruch.
Ich habe es sogar hingekriegt eine Stand-alone C# App zu machen welche mir den Text formatiert.
Der Code;
Encoding.GetEncoding(1252);
string TempDir = Environment.GetEnvironmentVariable("temp");
var lines = File.ReadLines(temp + @"\eineDatei.txt");
foreach (var line in lines)
{
if ((string.IsNullOrEmpty(line)) == false)
{
if (line !="100% ") {
string output = line;
output = output.Replace("\t", "");
output = output.Remove(0, 2);
File.AppendAllText(temp + @"\zweiteDatei.txt", output + "\n");
Console.WriteLine(output);
}
Da habe ich das Problem das der Code gefühlt noch langsamer als eine Batch ist. ( Und auch werden Umlaute Trotz Encoding .. nicht richtig geschrieben? )
Google gibt mir dazu nicht wirklich etwas an...
Die Charaktere um die es geht wird bei suche danach als Line feed und Carriage Return angegeben.
Ich würde diese Charakter gerne loswerden, ebenso die Leerzeichen und die Tabs.
Die Leerzeichen kann ich leider nicht einfach im ganzen String ersetzten, da der Pfad ja ein Leerzeichen enthalten könnte.
Wie bekomme ich jetzt aus diesem Chaos nur den Pfad heraus?
Die Aufgabe ist nicht einmalig, muss also automatisiert sein.
Hier noch ein Bild von NotePad++ und Editor beim anzeigen der Zeichen.
Ich bin dankbar für jede Hilfe!
Schönen Abend noch,
lg clragon
PS:
(Paste der Zeichen mit "", keine Ahnung ob das Forum sie zerstört)
"
"
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 330673
Url: https://administrator.de/forum/zeilenumbruch-zeilen-vorschub-entfernen-batch-330673.html
Ausgedruckt am: 13.05.2025 um 14:05 Uhr
9 Kommentare
Neuester Kommentar

In Batch tuts doch eine simple FOR-Schleife, die erledigt das gleich mit
:
Gruß
p.s. wenn ich sowas mit c# machen würde dann mit einem Regex für alle Zeilen
Das entfernt nicht sichtbare führende und hinten angestellte Zeichen.
for /f "tokens=*" %%a in ('robocopy "C:\quelle" "C:\ziel" /S /FP /ZB /L /NS /NP /NC /NJH /NJS /NDL') do @echo %%a
Gruß
p.s. wenn ich sowas mit c# machen würde dann mit einem Regex für alle Zeilen
^\s+|\s+$
jetzt muss ich nur noch alle Tabs und Leerzeichen am Anfang entfernen.
Was da wohl am effizientesten ist...?
Was da wohl am effizientesten ist...?
Keine Ahnung was du nutzen willst. C#? Ich hab keine Ahnung von C#, aber Google sagt
https://msdn.microsoft.com/en-us/library/system.string.trimstart(v=vs.11 ...
Grüße
rubberman

Nimm sed schneller bekommst du's dann wirklich nicht mehr. p.s. Sed gibt's auch für Windows.
sed -re 's/^\s*|\s*$//g' datei.txt