Если вам нужен каталог, в котором вы находитесь в данный момент, вы можете получить его из %cd%
. Это ваш текущий рабочий каталог.
Если вы собираетесь изменить ваш текущий рабочий каталог во время выполнения скрипта, просто сохраните его при запуске:
set startdir=%cd%
, тогда вы можете использовать %startdir%
в своем коде независимо от каких-либо изменений позже (которые влияют на %cd%
).
Если вы просто хотите получить последний компонент этого пути (согласно вашему комментарию), вы можете использовать следующее в качестве базовой линии:
@setlocal enableextensions enabledelayedexpansion
@echo off
set startdir=%cd%
set temp=%startdir%
set folder=
:loop
if not "x%temp:~-1%"=="x\" (
set folder=!temp:~-1!!folder!
set temp=!temp:~0,-1!
goto :loop
)
echo.startdir = %startdir%
echo.folder = %folder%
endlocal && set folder=%folder%
Это выводит:
C:\Documents and Settings\Pax> testprog.cmd
startdir = C:\Documents and Settings\Pax
folder = Pax
Он работает, копируя символы с конца полного пути, по одному, пока не найдет разделитель \
. Это не красиво и не эффективно, но пакетное программирование Windows редко бывает: -)
EDIT
На самом деле, существует простой и очень эффективный способ получения последнего имени компонента.
for %%F in ("%cd%") do set "folder=%~nxF"
Не проблема для этой ситуации, но если вы имеете дело с переменной, содержащей путь, который может заканчиваться или не заканчиваться \
, то вы можете гарантировать правильный результат, добавив \.
for %%F in ("%pathVar%\.") do set "folder=%~nxF"