Получить имя каталога по пути% CD% - PullRequest
17 голосов
/ 10 ноября 2011

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

C:\Parent\Child

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

спасибо

Ответы [ 4 ]

28 голосов
/ 10 ноября 2011
for %%a in (.) do set currentfolder=%%~na
echo %currentfolder%

Отсюда: https://superuser.com/questions/160702/get-current-folder-name-by-a-dos-command

3 голосов
/ 10 ноября 2011

Вот ответ

for %%a in ("%cd%") do set folder=%%~na
echo.%folder%
pause
1 голос
/ 05 апреля 2016

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

@ECHO OFF
FOR %%a IN (.) DO SET currentfolder=%%~nxa
ECHO %currentfolder%
0 голосов
/ 27 декабря 2014

@ 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...