by.Serj, если речь про две строки в цикле:
Код:
(for /f "delims=" %%a in ('dir /b/s "%$m%"') do @(
set "b=%%~dpna"
call echo.%%b:~0,%mp%%%%%~xa
)
)>"%$f%"
присвоение переменной
b пути\имени файла (
%%a) без расширения:
Код:
set "b=%%~dpna"
при включенном режиме
EnableDelayedExpansion вторая строка имела бы вид:
Код:
echo.!b:~0,%mp%!%%~xa
где "
%%~xa" - расширение файла (
%%a);
"
%mp%" - значение переменной
mp
"
!b:~0,%mp%!" -
%mp% первых символов переменной
b
чтобы избежать использования EnableDelayedExpansion используем трикс с CALL: добавляем перед командой CALL и заменяем "!" на "%%" (отложенная подстановка), в результате при (первом) вызове CALL будут подставлены значения
%%a и
%mp%, при (втором) вызове ECHO - значение
b