Вы можете только извлечь путь и имя файла из (1) параметр самого ВАТ %1
, или (2) параметра вызова %1
или (3) локальный для переменной %%a
.
в HELP CALL
или HELP FOR
вы можете найти более подробную информацию:
% ~ 1 - расширяет% 1 удаление любой окружающую кавычки (")
% ~ f1 - Расширяет%-полностью квалифицированный имя пути
% ~ d1 - расширяется% 1 на букву диска только
% ~ p1 - расширяющуюся% 1 путь только
% ~ n1 - расширяющийся% 1 к имени файла только
% ~ x1 - расширяет% 1 расширение файла только
% ~ s1 - развёрнутый путь содержит короткие имена только
% ~ a1 - расширяет% 1 к атрибутам файла
% ~ t1 - расширяется% 1 дата/время файла
% ~ z1 - расширяется% 1 размер файла
а потом попробуйте следующее:
Либо передать строку, которая будет анализироваться в качестве параметра к вызову
call :setfile ..\Desktop\fs.cfg
echo %file% = %filepath% + %filename%
goto :eof
:setfile
set file=%~f1
set filepath=%~dp1
set filename=%~nx1
goto :eof
или эквивалент, передать имя файла в качестве локального переменного для
for %%a in (..\Desktop\fs.cfg) do (
set file=%%~fa
set filepath=%%~dpa
set filename=%%~nxa
)
echo %file% = %filepath% + %filename%
Возможный дубликат [Как разделить имя файла из полного пути в партии?] (http://stackoverflow.com/questions/9252980/how-to-split-the-filename-from-a-full-path-in-batch) – iTayb