Я использую это, если я просто хочу удалить расширение из переменной (без зацикливания каких-либо каталогов или существующих файлов):
for %%f in ("%filename%") do set filename=%%~nf
Если вы хотите удалить расширение из полного пути, используйте %%dpnf
вместо:
for %%f in ("%path%") do set path=%%~dpnf
Пример:
(запись %
вместо %%
для использования этого непосредственно в консоли, а не внутри скрипта.)
for %f in ("file name.dat") do echo %~nf
for %f in ("C:\Dir\file.dat") do echo %~nf
REM ===========
REM OUTPUT:
REM file name
REM C:\Dir\file