el archivo por lotes de Windows con el comando goto no funciona

Tengo un problema con el comando GOTO y las etiquetas afiliadas.

Hechos: Dado un montón de archivos de una carpeta (son errores de registro), necesito abrirlos y verificar si contienen una cadena específica. En caso afirmativo, elimine algunos caracteres (todos los caracteres después de la última aparición de "_", incluido él mismo) de los nombres de archivo y realice otras operaciones.

Para cortar los caracteres, estoy usando el comando GOTO en bucle como lo encontré descrito aquí:http://www.robvanderwoude.com/battech_while_loops.php

El guión es:

@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

El script no se está ejecutando porque hay una línea vacía después del bucle de etiqueta ¿Fin? Si estoy escribiendo instrucciones justo después de esa etiqueta, se ejecutarán, pero el resto de las iteraciones de la primera declaración for no se ejecutarán (la carpeta de errores de registro contiene más de un archivo)

¿Alguien puede brindar ayuda?

Respuestas a la pregunta(1)

Su respuesta a la pregunta