@ manojlds ответ не правильный для всех случаев.
Ярлык %%~nI
отлично работает для файлов, но не для каталогов.
Пример:
C: \ a..o \ ex.bat
@ECHO OFF
FOR %%a IN (.) DO SET currentfolder=%%~na
ECHO %currentfolder%
Если я выполню этот командный файл из его местоположения, вывод будет "a."
:
C:\a..o\>ex.bat
a.
Решение:
Возможное решение:
C: \ sol.bat
@ECHO OFF
SETLOCAL
SET cwd="\%~f1"
SET name=""
:extract
SET char="%cwd:~-2,-1%"
IF NOT %char%=="\" (
SET cwd="%cwd:~1,-2%"
SET name="%char:~1,-1%%name:~1,-1%"
GOTO :extract
)
ECHO %name%
ENDLOCAL
Тесты:
C:\>sol.bat "@!%#"
"@!%#"
C:\>sol.bat a..o
"a..o"