Windows Batch-Datei mit goto Befehl funktioniert nicht

Ich habe ein Problem mit dem Befehl GOTO und den zugehörigen Labels.

Facts: Angesichts einer Reihe von Dateien aus einem Ordner (es handelt sich um Protokollfehler) muss ich sie öffnen und prüfen, ob sie eine bestimmte Zeichenfolge enthalten. Wenn ja, entfernen Sie einige Zeichen (alle Zeichen nach dem letzten Auftreten von "_", einschließlich der Zeichen selbst) aus den Dateinamen und führen Sie andere Vorgänge aus.

Zum Abschneiden der Zeichen verwende ich den Befehl GOTO in einer Schleife, wie ich ihn hier beschrieben habe:http: //www.robvanderwoude.com/battech_while_loops.ph

Das Skript lautet:

@echo off
setlocal EnableDelayedExpansion

cls

for %%X in (D:\e-pub\outbox\logs\*.*) do (

    for /F "tokens=7" %%S in (%%X) do (

        if /i "%%S"=="<ml>" (
            SET fisier=%%~nX
            SET cond=!fisier:~-1!
            SET fisier=!fisier:~0,-1!

            :loopStart
            rem condition to break the loop
            if !cond!==_ goto loopEnd
            SET cond=!fisier:~-1!
            SET fisier=!fisier:~0,-1!
            goto loopStart

            :loopEnd

            rem here it should be out of a loop
            rem other stuff to do with var !fisier!
            rem the following line is not executed because of the label loopEnd
            echo !fisier!
        )
    )
) 

pause

Das Skript wird nicht ausgeführt, da nach dem Label loopEnd? Eine leere Zeile steht! Wenn ich direkt nach diesem Label Anweisungen schreibe, werden diese ausgeführt, aber die restlichen Iterationen ab der ersten for-Anweisung werden nicht ausgeführt (der Protokollfehlerordner enthält mehrere Dateien).

Kann jemand Hilfe leisten?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage