다음 스 니펫은이를 수행하는 한 가지 방법을 보여줍니다.
@setlocal enableextensions enabledelayedexpansion
@echo off
:main
set var=C:\Users\user\Desktop\blah blah\yada yada.exe
call :basename result "%var%"
echo %result%
endlocal
goto :eof
:basename
set %1=%~nx2
goto :eof
그것은 기본적으로 전체 이름과에 기본 이름을 할당 할 변수를 전달합니다 (UNIX 유틸리티의 이름을 따서 명명) 함수 basename
를 호출, 당신은 당신이 포함 된 파일 이름 않도록 적절하게 인용 있는지 확인해야합니다 공백으로 인해 문제가 발생할 수 있습니다.
가변 수정 자의 전체 집합은 call /?
도움말 출력에서 볼 수 있습니다.
또는, 한 줄 for
문에서 같은 basename
기능을 사용할 수 있습니다 : 이것은 당신이 함수를 호출 할 필요없이 기본 이름 을 얻을 수 있습니다
for /f "delims=" %%I in ("%var%") do set result=%%~nxI
. 나는 그것이 더 읽기 이후 기능에게 자신을 선호하는 경향이 있지만, 당신은 아마 주석을 포함하여 해당을 완화 할 수 :
rem Get base name of var into result:
rem eg: var = C:\Users\user\Desktop\blah blah\yada yada.exe
rem result = yada yada.exe
for /f "delims=" %%I in ("%var%") do set result=%%~nxI
이것은 2의 가장 단순한 방법 이었지만 어떻게 작동하는지 알았지 만 for dir 루프를 사용하여 전환했습니다. – BoKa1337