3 строки скрипта получают результат ...
Найдены 2 дополнительных способа достижения цели, и в отличие от других ответов на этот вопрос, он не требует пакетных «функций», никакого отложенного расширения, а также не имеет ограничения, которое есть у ответа Тима Пила в отношении глубины каталога:
@echo off
SET CDIR=%~p0
SET CDIR=%CDIR:~1,-1%
SET CDIR=%CDIR:\=,%
SET CDIR=%CDIR: =#%
FOR %%a IN (%CDIR%) DO SET "CNAME=%%a"
ECHO Current directory path: %CDIR%
SET CNAME=%CNAME:#= %
ECHO Current directory name: %CNAME%
pause
ПЕРЕСМОТР: после моей новой версии приведен пример вывода:
Current directory path: Documents#and#Settings,username,.sqldeveloper,tmp,my_folder,MY.again
Current directory name: MY.again
Press any key to continue . . .
Это означает, что скрипт не обрабатывает '#' или ',' в имени папки, но может быть настроен для этого.
ADDENDUM: Спросив кого-то на форуме dostips , нашел еще более простой способ сделать это:
@echo off
SET "CDIR=%~dp0"
:: for loop requires removing trailing backslash from %~dp0 output
SET "CDIR=%CDIR:~0,-1%"
FOR %%i IN ("%CDIR%") DO SET "PARENTFOLDERNAME=%%~nxi"
ECHO Parent folder: %PARENTFOLDERNAME%
ECHO Full path: %~dp0
pause>nul