Принятый ответ полезен, но не сразу понятно, как извлечь имя файла из пути, если вы НЕ используете переданные значения. Я смог решить это из этой темы, но если другим не повезло, вот как это делается:
@echo off
setlocal enabledelayedexpansion enableextensions
set myPath=C:\Somewhere\Somewhere\SomeFile.txt
call :file_name_from_path result !myPath!
echo %result%
goto :eof
:file_name_from_path <resultVar> <pathVar>
(
set "%~1=%~nx2"
exit /b
)
:eof
endlocal
Теперь функцию :file_name_from_path
можно использовать где угодно для получения значения, а не только для аргументов, переданных в аргументах. Это может быть чрезвычайно полезно, если аргументы могут быть переданы в файл в неопределенном порядке или путь вообще не передан в файл.