Получить имя каталога из пути% CD%

Учитывая, что текущий каталог %CD% равен

C:\Parent\Child

В пакетном файле, как я могу получить значение Child в переменной?

спасибо

Ответы

Ответ 2

Вот ответ

for %%a in ("%cd%") do set folder=%%~na
echo.%folder%
pause

Ответ 3

или вы можете сделать что-то вроде этого

@ECHO OFF
FOR %%a IN (.) DO SET currentfolder=%%~nxa
ECHO %currentfolder%

Ответ 4

Ответ на

@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"