Если вы хотите каталог, в котором вы находитесь в данный момент на, вы можете получить, что с %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"
@Berming, я добавил код, который даст вам последний компонент пути. См. Обновление. – paxdiablo
Только то, что мне было нужно, большое спасибо. Я заметил, что когда я 'endlocal', после этого я не могу получить доступ к переменной' folder', поэтому я достал эту строку. Я понял, что с тех пор, как я удалил эту строку, я также должен удалить «@setlocal enableextensions enabledelayedexpansion» вверху, но удаление этой строки вызвало проблемы, поэтому я сохранил ее. – Berming
@Berming, см. Обновление. Если вы оставите «endlocal», это повлияет на вас позже.Вы можете _still_ использовать 'setlocal/endlocal', чтобы убедиться, что замедленное расширение работает, но измените' endlocal' на 'endlocal && set folder =% folder%', чтобы сместилась переменная 'folder'. – paxdiablo