Синтаксис замены и подстроки работает только для переменных, а не для параметров.
Но вы можете просто скопировать параметр в переменную и затем использовать синтаксис подстроки.
setlocal EnableDelayedExpansion
FOR /D %%d IN (c:\windows\*) DO (
set "var=%%d"
echo !var:~-7!
)
Вам необходимо отсроченное расширение, так как обычный% var% будет расширен при анализе всего блока, а не во время выполнения.
Или вы можете использовать технику call
, но это очень медленно и имеет много побочных эффектов.
FOR /D %%d IN (c:\windows\*) DO (
set "var=%%d"
call echo %%var:~-7%%
)