marsl84

Wert aus Textzeile prüfen und ganze Zeile in neue Textdatei verschieben

Hallo alle zusammen,

ich habe mal wieder ein Problem, bei welchen mir keine Lösung einfällt und ich auch keine finden kann face-sad

Ich möchte aus einer Textdatei jede Zeile einzeln auslesen, den 3. Wert überprüfen und wenn dieser 3. Wert der Bedienung entspricht, die ganze Zeile in Textdatei A schreiben, wenn nicht, die ganze Zeile in Textdatei B schreiben.

Mein Lösungsansatz bis jetzt:

for /f "tokens=3 delims=!" %%m in (Textdatei.txt) do (  
if %%m == bedinung (
echo %%m >> textdatei_a.txt
) else (
echo %%m >> textdatei_a.txt
)

Aber leider schreibt er mir hier natürlich nur das ausgewertete Token in die neuen Textdateien. Ich könnte jetzt alle tokens auswerten (zB: tokens=1-10) und dann alle Variablen in die Textdatei schreiben (echo %%m %%n ... >> textdatei_a.txt) aber es sind über 50 Werte in der auszuwertenden Textdatei. Das geht ja nicht wenn ich mich nicht irre oder?!

Weiß jemand Rat?

Vielen Dank schon im voraus.

Grüße,
Marsl
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 157488

Url: https://administrator.de/forum/wert-aus-textzeile-pruefen-und-ganze-zeile-in-neue-textdatei-verschieben-157488.html

Ausgedruckt am: 17.05.2025 um 11:05 Uhr

bastla
bastla 23.12.2010 um 11:19:20 Uhr
Goto Top
Hallo marsl84!

Wenn der zu prüfende Wert "speziell" genug wäre (und daher nicht auch in einem anderen "token" vorkommen kann) sollte sich das mit
findstr "!bedinung!" Textdatei.txt>>textdatei_a.txt  
findstr /v "!bedinung!" Textdatei.txt>>textdatei_b.txt  
lösen lassen - ansonsten könntest Du geschachtelte "for"-Schleifen versuchen:
for /f "delims=" %%a in (Textdatei.txt) do (  
    for /f "tokens=3 delims=!" %%m in (%%a) do (  
    if %%m==bedinung (
        echo %%a >> textdatei_a.txt
    ) else (
        echo %%a >> textdatei_b.txt
    )
)
Grüße
bastla

P.S.: Ich wollte mit der Schreibweise "Bedingung" nicht noch eine Variante ins Spiel bringen - "Bedienung" und "bedinung" sollten für den Anfang genügen ... face-wink
Biber
Biber 23.12.2010 um 11:24:20 Uhr
Goto Top
Moin marsi84,

du könntest eine äußere FOR/F-Anweisung zusätzlich vorschalten und dort die ganze Zeile (also FOR /F "delims="...) transportieren.

Sinngemäß und ungetestet:
FOR /F "delims=" %%i in Textdatei.txt DO (  
    for /f "tokens=3 delims=!" %%m in ("%%i") do (  
            if "%%m" == "bedinung" (  
                 echo %%i>> textdatei_a.txt
           ) else (
                echo %%i>> textdatei_b.txt
     )
)

Allerdings... ich würde erstmal prüfen, ob du es nicht einfacher mit "FindStr /i "bedingung" textdatei.txt" bzw. "FindStr /i /v "bedingung" textdatei.txt" gebacken bekommst.

Grüße
Biber
marsl84
marsl84 23.12.2010 um 12:26:26 Uhr
Goto Top
Hallo,

erstmal vielen Dank für eure Antworten face-smile

ich hab jetzt die Möglichkeit mit der zusätzlichen FOR Schleife ausprobiert. An sich scheint Sie zu funktionieren, problem ist nur, dass die Zeile in der 2. Schleife ohne Tokens ankommt?! Die ! sind verschwunden?!

Jemand eine Idee? face-smile

Danke und Grüße,
Marsl
bastla
bastla 23.12.2010 um 12:47:59 Uhr
Goto Top
Hallo marsl84!

Wenn bei Dir auch in der ersten Schleife "delims=" steht, ist das eigentlich nur mit einer Verwendung von "setlocal enabledelayedexpansion" zu erklären ...

Grüße
bastla
marsl84
marsl84 23.12.2010 um 13:06:06 Uhr
Goto Top
Ja, das kann sein, weil ich mit "setlocal enabledelayedexpansion" arbeite. Aber egal, ich habe es jetzt mit findstr gelöst. ;)

Funktioniert super.

Vielen Dank euch und ein frohes Fest!!!! face-smile

Grüße,
Marsl