Ответ 1
for %%a in (.) do set currentfolder=%%~na
echo %currentfolder%
Отсюда: https://superuser.com/questions/160702/get-current-folder-name-by-a-dos-command
Учитывая, что текущий каталог %CD%
равен
C:\Parent\Child
В пакетном файле, как я могу получить значение Child
в переменной?
спасибо
for %%a in (.) do set currentfolder=%%~na
echo %currentfolder%
Отсюда: https://superuser.com/questions/160702/get-current-folder-name-by-a-dos-command
Вот ответ
for %%a in ("%cd%") do set folder=%%~na
echo.%folder%
pause
или вы можете сделать что-то вроде этого
@ECHO OFF
FOR %%a IN (.) DO SET currentfolder=%%~nxa
ECHO %currentfolder%
@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"