2011-07-22 15 views
31

Geçerli konumla bir değişkeni nasıl ayarlayabilirim? c: \ testine girip değişkeni ayarladığım gibi test olur. c: \ test \ test2 içine girersem değişken test2 olur mu? ...toplu iş komut satırı geçerli yol konumuyla bir değişken ayarlamak için

Çok fazla klasörün içine girip bazı dosyaların var olup olmadığını kontrol etmeyi düşünüyorum. Doğru dosya varsa geçerli klasörü bir değişkene ayarlamak istiyorum böylece yolu kopyalayabilirim Bu klasörü kopyalayın ...

Tamam Öyleyse asıl sorun, dosyaların geri kalanını .inf ile aynı klasöre kopyalamaktır ... lütfen yardım edin!

Thnak size çok

cevap

52

geçerli dizin "gölge" değişken cd içindedir.
Bu anda çalışan toplu dosyasının sürücü & yoluna genişletir

set "var=%cd%" 
+0

Teşekkür ederim, işe yaradı! Her ne kadar ben bunun için klasörleri ve alt klasörleri ve her seviyede bir değişken için% cd% .. bir değişken ekleyeyim ne yapmalıyım? Bu yüzden her klasör değişkeni alır geçerli yol olur .. – massaki

10
%~dp0 

deneyebilirsiniz. Genellikle böyle bir şeyle benim toplu dosyalarını çevreleyen:

@echo off 
pushd %~dp0 

... 

popd 

Edit: Ben OP anlamadı görünüyor. Örneğim şu anda çalışan komut dosyasının yerini alıyor, "Geçerli Dizin" değil. Jüriye +1.

+0

% ~ dp0 geçerli olabilir konum, ancak toplu iş dosyası geçerli dizinde ise. Ama cevabınız yardımcı oluyor, çünkü bu sık sık gereklilik – jeb

+0

olduğundan, cmd'de echo %% ~ dp0 yazmayı deniyorum ve% ~ dp0 ... – massaki

+1

@massaki olsun: komut isteminden çalışmıyor; Sadece toplu iş dosyalarında çalışır. '% dp0', toplu iş dosyasının tam yolu olan toplu iş dosyasına ilişkin 0 ıncı bağımsız değişkeninin sürücü ve yoludur. – tenfour

2

Burada biraz karışıklık olduğunu düşünüyorum. % CD% daima geçerli dizini içerir, bu yüzden sahip olmak için herhangi bir şey eklemeniz gerekmez. Ancak, orijinal sorunuzu tekrar okuyarak, mevcut dizinin LAST PARÇASINA, yani önceki konumların haricindeki geçerli konumun adına ihtiyacınız olduğunu düşünüyorum. Eğer öyleyse, bunu kullanabilirsiniz:

set i=0 
:nextdir 
set /a i+=1 
for /f "tokens=%i% delims=\" %%a in ("%CD%") do if not "%%a" == "" set lastdir=%%a& goto nextdir 
echo Current location: %lastdir% 
+0

Bunun çok eski olduğunu anlıyorum, ancak bu hataları şu şekilde bilmenizi istedim: delims = \ "şu anda beklenmedik bir durumdu. –

İlgili konular