Findstr - noch ein Syntax- Problem
wie lösche ich in der Zeilenmitte jeder Zeile einen Text?
Servus,
noch ein kleines Problem (leider nicht für mich...):
In LOG- Dateien stehen folgende Zeilen (der Aufbau ist immer gleich, nur die Werte unterscheiden sich):
2012/06/01 13:26:46 G-Sensor( 0.00, 0.88,-0.06) N40 05.923 E019 45.084 0km/h
Da ich diese Dateien schon vorher in einer Batch mit "findstr" nach Duplikaten absuchen und bereinigen lasse, was dank der Forumshilfe schon funktioniert, wäre es am einfachsten, wenn man die Textteile, die ich nicht brauchen kann, in derselben Batch mittels findstr entfernen könnte.
Ich bräuchte einen Befehl, der in jeder Zeile die Zeichen ab Pos. 24 die nächsten 28 Zeichen löscht.
Das selbe nochmal vom Zeilenende 8 Zeichen, so daß danach die Einträge für "G_Sensor(xxxx)" und "km/h" entfernt sind.
findstr /r /c:"%Zeile:~24,28%" - funktioniert natürlich nicht, Beispiel habe ich auch keines gefunden bzw. wieder mal übersehen...
Ich hoffe auf Nachsicht und bedanke mich schonmal vorab!
Gruß - Toni
P.S.:
Hier noch die Batch, die ich aus dem Forum zusammengeklaut und angepasst habe.
Nicht schön, ich weiß, aber sie tut das, was ich brauche.
Wenn ich jetzt noch die überflüssigen Daten mit eurer Hilfe rausbekomme, wäre ich glücklich...
Servus,
noch ein kleines Problem (leider nicht für mich...):
In LOG- Dateien stehen folgende Zeilen (der Aufbau ist immer gleich, nur die Werte unterscheiden sich):
2012/06/01 13:26:46 G-Sensor( 0.00, 0.88,-0.06) N40 05.923 E019 45.084 0km/h
Da ich diese Dateien schon vorher in einer Batch mit "findstr" nach Duplikaten absuchen und bereinigen lasse, was dank der Forumshilfe schon funktioniert, wäre es am einfachsten, wenn man die Textteile, die ich nicht brauchen kann, in derselben Batch mittels findstr entfernen könnte.
Ich bräuchte einen Befehl, der in jeder Zeile die Zeichen ab Pos. 24 die nächsten 28 Zeichen löscht.
Das selbe nochmal vom Zeilenende 8 Zeichen, so daß danach die Einträge für "G_Sensor(xxxx)" und "km/h" entfernt sind.
findstr /r /c:"%Zeile:~24,28%" - funktioniert natürlich nicht, Beispiel habe ich auch keines gefunden bzw. wieder mal übersehen...
Ich hoffe auf Nachsicht und bedanke mich schonmal vorab!
Gruß - Toni
P.S.:
Hier noch die Batch, die ich aus dem Forum zusammengeklaut und angepasst habe.
Nicht schön, ich weiß, aber sie tut das, was ich brauche.
Wenn ich jetzt noch die überflüssigen Daten mit eurer Hilfe rausbekomme, wäre ich glücklich...
@echo off & setlocal
set "Datei=13265400.LOG"
set "Bak=.bak"
set "AusgabeDatei=bereinigt-1.log"
set "Duplikate=Duplikate.txt"
set /a LineNo=0
move "%Datei%" "%Datei%%Bak%"
copy nul "%Duplikate%">nul
for /f "usebackq delims=" %%i in ("%Datei%%Bak%") do set "Zeile=%%i" & call :ProcessLine
set "Datei=bereinigt-1.log"
set "Bak=.bak"
set "AusgabeDatei=bereinigt-2.log"
set "Duplikate=Duplikate.txt"
set /a LineNo=0
move "%Datei%" "%Datei%%Bak%"
copy nul "%Duplikate%">nul
for /f "usebackq delims=" %%i in ("%Datei%%Bak%") do set "Zeile=%%i" & call :ProcessLine2
del "%Datei%%Bak%"
del "%Duplikate%"
goto :eof
:ProcessLine
set /a LineNo+=1
echo Validiere Zeile %LineNo% ...
findstr /b /c:"%Zeile:~,19%" "%AusgabeDatei%">nul && >>"%Duplikate%" echo %Zeile% || >>"%AusgabeDatei%" echo %Zeile%
goto :eof
:ProcessLine2
set /a LineNo+=1
echo Validiere Zeile %LineNo% ...
findstr /e /c:"%Zeile:~-30%" "%AusgabeDatei%">nul && >>"%Duplikate%" echo %Zeile% || >>"%AusgabeDatei%" echo %Zeile%
goto :eof
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 205772
Url: https://administrator.de/contentid/205772
Ausgedruckt am: 22.11.2024 um 02:11 Uhr
5 Kommentare
Neuester Kommentar
... und lässt sich so in den bestehenden Batch einbauen:
- hinsichtlich der genauen Positionen (23/24, 51/52) musst Du Dir das selbst ansehen ...
Grüße
bastla
:ProcessLine2
set /a LineNo+=1
echo Validiere Zeile %LineNo% ...
set "Reduziert=%Zeile:~,23%%Zeile:~51,-8%"
findstr /e /c:"%Zeile:~-30%" "%AusgabeDatei%">nul && >>"%Duplikate%" echo %Zeile% || >>"%AusgabeDatei%" echo %Reduziert%
goto :eof
Grüße
bastla