Не работает переменная в кавычках, внутри цикла bat файла?

Никак не могу найти решение.

Есть имя файла, например 21-Wi.txt. Необходимо в именах файлов выполнить деление строки по символу "-". Если использовать такой код, то все работает, выводит 21.

set "x=21-Wi"
set "x1=%x:-=" & set "x2=%"
echo !x1!

Но если поместить это в цикл для обхода файлов в каталоге, то выводит "-=".

@echo off

setlocal enabledelayedexpansion
FOR %%I IN ("*.txt") DO (
    SET fne=%%~nxI
    SET fn=%%~nI
    
    set "x1=%fn:-=" & set "x2=%"
    
    echo !x1!
)

Pause

Буду крайне признателен за помощь.


Ответы (1 шт):

Автор решения: по разному

Этот батник должен вывести только числа:

@echo off

FOR %%a IN ("*.txt") DO for /f "usebackq tokens=1 delims=-" %%b in ('%%~na') do echo.%%b

Pause
→ Ссылка