Werte filtern und in neue Datei schreiben mit Batch
Hallo,
ich habe folgendes Problem: Ich habe als Grundlage ein ASCII-File in dem über 1.6 Mio Punkte in folgender Form vorhanden sind:
4494350.50 5755800.50 52.85
4494450.50 5756800.50 52.85
4494650.50 5757800.50 52.85
Dabei beschreibt der erste Wert den Rechtswert, der zweite den Hochwert und der dritte die Höhe. Nun hab ich folgendes Problem: Für mein digatales Geländemodell benötige ich von den 1.6 Millionen Punkten nur einen bestimmten Wertebereich.
Umgangssprachlich würde ich es folgendermaßen ausdrücken:
WENN RECHTSWERT größer als 4494350.50 UND HOCHWERT größer als 5755800.50 dann
SCHREIBE ZEILE IN ZIELDATEI.TXT
SONST LIES NÄCHSTE ZEILE
Ich möchte also mit if-Abfragen bestimmte Zeilen aus der ASCII - Datei filtern und diese in eine neue ASCII Datei schreiben, dabei soll er immer die aktuell gefundene Zeile an die jetzige anhängen.
Über eure Antworten würde ich mich freune und bedanke mich schonmal im Voraus.
ich habe folgendes Problem: Ich habe als Grundlage ein ASCII-File in dem über 1.6 Mio Punkte in folgender Form vorhanden sind:
4494350.50 5755800.50 52.85
4494450.50 5756800.50 52.85
4494650.50 5757800.50 52.85
Dabei beschreibt der erste Wert den Rechtswert, der zweite den Hochwert und der dritte die Höhe. Nun hab ich folgendes Problem: Für mein digatales Geländemodell benötige ich von den 1.6 Millionen Punkten nur einen bestimmten Wertebereich.
Umgangssprachlich würde ich es folgendermaßen ausdrücken:
WENN RECHTSWERT größer als 4494350.50 UND HOCHWERT größer als 5755800.50 dann
SCHREIBE ZEILE IN ZIELDATEI.TXT
SONST LIES NÄCHSTE ZEILE
Ich möchte also mit if-Abfragen bestimmte Zeilen aus der ASCII - Datei filtern und diese in eine neue ASCII Datei schreiben, dabei soll er immer die aktuell gefundene Zeile an die jetzige anhängen.
Über eure Antworten würde ich mich freune und bedanke mich schonmal im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 141759
Url: https://administrator.de/contentid/141759
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
12 Kommentare
Neuester Kommentar
Muss das ne Dos-Batch sein oder gehen auch Scriptsprachen wie Perl? Weil dann wäre es zimlich simpel -> gucken ob die erste Zahl im Bereich liegt -> wenn ja die Zeile in nen Array schreiben. Am ende der File die Quelldatei schliessen, ne neue Datei erstellen/öffnen und den Inhalt des Arrays da reinpumpen...
Hallo fabmeister19,
kein Problem mit Batch vielleicht nicht superschnell.
zu Testzwecken gebe ich zusätzlich alle Zeilem aus
Gruß
LotPings
Edit: Ich habe die X,Y Min,Max etwas eindeutiger formuliert
kein Problem mit Batch vielleicht nicht superschnell.
@Echo off
Set InFile=Test.asc
Set OutFile=Out.txt
:: UNTEN LINKS: (4494350.50 ; 5755800.50) = MinX,MinY
:: OBEN RECHTS: (4494930.50 ; 5756000.50) = MaxX,MaxY
Set MinX=4494350.50
Set MaxX=4494930.50
Set MinY=5755800.50
Set MaxY=5755800.50
For /f "delims=" %%A in (%InFile%) Do Call :Check %%A
Goto :Eof
:Check
Echo All %*
if %1 LSS %MinX% goto :eof
if %1 GTR %MaxX% goto :eof
if %2 LSS %MinY% goto :eof
if %2 GTR %MaxY% goto :eof
Echo --- %*
>> %OutFile% Echo.%*
zu Testzwecken gebe ich zusätzlich alle Zeilem aus
Gruß
LotPings
Edit: Ich habe die X,Y Min,Max etwas eindeutiger formuliert
Hallo fabmeister19,
ich habe die vorgeschlagenen Änderungen oben direkt eingebaut und (hoffe ich) eindeutiger formuliert.
Gruß
LotPings
ich habe die vorgeschlagenen Änderungen oben direkt eingebaut und (hoffe ich) eindeutiger formuliert.
Gruß
LotPings