Habe eine andere if-Option in der for-Schleife in einer Batch-Datei


0

Ich habe diese funktionierende For / F-Schleife:

Setlocal EnableDelayedExpansion
for /F "tokens=*" %%A in (New.txt) do (
    echo "%%A" | findstr /C:"[B]" 1>nul
    if !errorlevel!==1 echo "%%A"
    set line=%%A
    if !errorlevel!==0 echo BOLD !line:[B]=!
)

Was sie tut , ist Zeilen in einer Textdatei eingeben, mit Ausnahme , wenn es über eine Leitung mit dem Text coms [B]darin, fügt er BOLDan den Anfang der Zeile. Ich suche nach einer Möglichkeit, etwas Ähnliches zu haben, [S]wo es SUPERzum Anfang beitragen kann. Ich hatte das:

Setlocal EnableDelayedExpansion
for /F "tokens=*" %%A in (New.txt) do (
        echo "%%A" | findstr /C:"[B]" 1>nul
        if !errorlevel!==1 echo "%%A" | findstr /C:"[S]" 1>nul & if %errorlevel%==1 echo "%%A" & if %errorlevel%==0 echo SUPER !line:[S]=!
        set line=%%A
        if !errorlevel!==0 echo "!line:[B]=!"
    )

Es funktioniert jedoch nicht, weil das so läuft.

EDIT: Ich kann die Schleife nicht mit einem break oder goto beenden, da mehrere Zeilen zu verarbeiten sind.

Antworten:


3

Da Sie DelayedExpansion bereits verwenden, füge ich die aktuelle Zeile immer in die Variable ein lineund überprüfe per Zeichenfolgensubstitution, ob linedas Markup enthalten ist.

@Echo off & Setlocal EnableDelayedExpansion
for /F "tokens=*" %%A in (New.txt) do (
    set "line=%%A"
    if "!line!" neq "!line:[B]=!" set "line=BOLD !line:[B]=!"
    if "!line!" neq "!line:[S]=!" set "line=SUPER !line:[S]=!"
    echo=!line!
)

Faszinierend. Ich hatte nicht in Betracht gezogen, variable Befehle zu verwenden. Es scheint so, als würde das sehr gut funktionieren. Vielen Dank.
Mark Deven

LotPings ist wie immer der Batch-Experte zur Rettung! : D
Mark Deven
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.