sen Gittiğiniz o dizini istiyorsanız, %cd%
o alabilirsiniz. Bu senin şu andaki çalışma rehberin.
set startdir=%cd%
sonra siz ne olursa olsun herhangi bir değişiklik kodunuzda %startdir%
kullanabilirsiniz:
Eğer
değişen komut yürütme sırasında geçerli çalışma dizini, sadece başında kaydetmek olmaya gidiyoruz Açık (
%cd%
'u etkiler).
@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%
Bu çıkışlar:
sadece (Yorumlarınız göre) o yolun son bileşeni elde etmek istiyorsanız, temel olarak aşağıdaki kullanabilirsiniz
C:\Documents and Settings\Pax> testprog.cmd
startdir = C:\Documents and Settings\Pax
folder = Pax
\
ayırıcıyı bulana kadar, karakterleri tam yolun sonundan birer birer kopyalayarak çalışır. Oldukça ya da pratik değildi, ama
Aslında son bileşen adı almak için basit ve çok etkili bir yöntem olduğu DÜZENLEME
:-) Windows toplu programlama nadiren. for %%F in ("%cd%") do set "folder=%~nxF"
değil bu durum için bir sorun, ancak ya \
ile sona olmayabilir yolu içeren değişken ile ilgileniyor, o zaman \.
for %%F in ("%pathVar%\.") do set "folder=%~nxF"
@Berming, size yolun son bileşenini verecek kodu ekledim. Güncellemeye bakın. – paxdiablo
Sadece ihtiyacım olan şey, çok teşekkür ederim. Endlocal iken "klasör" değişkenine bundan sonra erişemediğimi fark ettim, bu yüzden bu çizgiyi çıkardım. Bu çizgiyi kaldırdığımdan beri, '@setlocal enableextensions enabledelayedexpansion '' i de kaldırmalıyım, fakat bu satırın kaldırılması sorunlara neden oldu, ben de onu sakladım. – Berming
@Berming, güncellemeye bakın. Endlocal'ı bırakırsanız, daha sonra sizi etkileyecektir.Gecikmeli genişletmenin çalıştığından emin olmak için 'setlocal/endlocal' işlevini kullanabilirsiniz, ancak' endocal' ile 'endlocal && set folder =% folder%' arasında değişiklik yaparak '' folder' değişkeninin çıkmasını sağlayabilirsiniz. – paxdiablo