Ben %~dp0
ı çok kullanışlı buluyorum ve toplu iş dosyalarımı daha taşınabilir hale getirmek için çok kullanıyorum.
Ama etiketin kendisi bana çok şifreli geliyor... "~" ne yapıyor? dp' sürücü ve yol anlamına mı geliyor? 0, dosya adını içeren toplu iş dosyasının yolu olan
%0`ı mı ifade ediyor?
Yoksa sadece garip bir etiket mi?
Ayrıca bunun belgelenmiş bir özellik mi yoksa kullanımdan kaldırılmaya eğilimli bir şey mi olduğunu bilmek istiyorum.
Arama
for /?
komut satırında bu sözdizimi hakkında yardım verir (FOR dışında da kullanılabilir, burası sadece yardımın bulunabileceği yerdir).
Buna ek olarak, FOR değişken referansları geliştirilmiştir. Artık aşağıdaki isteğe bağlı değişkenleri kullanabilirsiniz sözdizimi:
%~I - etrafındaki tırnak işaretlerini (") kaldırarak %I'yi genişletir %~fI - %I'yi tam nitelikli bir yol adına genişletir %~dI - %I'yi yalnızca bir sürücü harfine genişletir %~pI - %I öğesini yalnızca bir yola genişletir %~nI - %I öğesini yalnızca bir dosya adına genişletir %~xI - %I öğesini yalnızca bir dosya uzantısına genişletir %~sI - genişletilmiş yol yalnızca kısa adlar içerir %~aI - %I değerini dosyanın özniteliklerine genişletir %~tI - %I değerini dosyanın tarihine/saatine genişletir %~zI - %I değerini dosya boyutuna genişletir %~$PATH:I - PATH içinde listelenen dizinleri arar ortam değişkenine dönüştürür ve %I'yı ilk bulunanın tam nitelikli adı. Eğer ortam değişkeni adı tanımlanmışsa veya dosya araması yapıldığında, bu değiştirici boş dize
Değiştiriciler aşağıdakileri elde etmek için birleştirilebilir bileşik sonuçlar:
%~dpI - %I'yi yalnızca bir sürücü harfine ve yola genişletir %~nxI - %I öğesini yalnızca bir dosya adı ve uzantısına genişletir %~fsI - %I'yi yalnızca kısa adlar içeren tam bir yol adına genişletir %~dp$PATH:I - PATH içinde listelenen dizinleri arar I için > ortam değişkeni ve sürücü harfi ve bulunan ilk sürücünün yolu. %~ftzaI - %I'yi DIR benzeri bir çıktı satırına genişletir
Yukarıdaki örneklerde %I ve PATH diğer geçerli değerlerle değiştirilebilir. gt; %~ sözdizimi geçerli bir değerle sonlandırılır FOR değişken adı. Büyük harf seçme %I gibi değişken isimleri bunu daha okunabilir ve aşağıdakilerle karışıklığı önler büyük/küçük harf olmayan değiştiriciler hassas.
Tam yol adı" için f
, sürücü harfi için d
, yol için p
gibi kullanabileceğiniz farklı harfler vardır ve bunlar birleştirilebilir. Bu dizilerin her biri için %~
başlangıçtır ve I
sayısı %I
parametresi üzerinde çalıştığını gösterir (burada %0
toplu iş dosyasının tam adıdır, tıpkı tahmin ettiğiniz gibi).
(Öncelikle, toplu iş için bu faydalı referans sitesini tavsiye etmek isterim: http://ss64.com/nt/)
O zaman başka bir faydalı açıklama: http://htipe.wordpress.com/2008/10/09/the-dp0-variable/
%~dp0 Değişkeni
%~dp0 (bu bir sıfırdır) değişkenine bir Windows içinde başvurulduğunda toplu iş dosyası, o toplu işin d sürücü harfine ve p yoluna genişleyecektir dosya.
gt; %0-%9 değişkenleri toplu işin komut satırı parametrelerini ifade eder dosya. 1-%9 toplu iş dosyası adından sonra gelen komut satırı bağımsız değişkenlerini ifade eder. %0 toplu iş dosyasının kendisini ifade eder.
Yüzde karakterini (%) bir tilde karakteri (~) ile takip ederseniz, parametre numarasını değiştirmek için parametre numarasından önce bir değiştirici(ler) ekleyebilirsiniz. değişkenin genişletilme şekli. d değiştiricisi sürücüye genişler harfi ve p değiştiricisi parametrenin yoluna genişler.
Örnek: Diyelim ki C: üzerinde bat_files adında bir dizininiz var ve bu dizinde example.bat adlı bir dosya bulunmaktadır. Bu durumda, %~dp0 (d ve p değiştiricilerini birleştirerek) C:\bat_files\ şeklinde genişleyecektir.
Tam bir açıklama için bu Microsoft makalesine göz atın.
Ayrıca, bu forum başlığına göz atın.
Ve burada'ten daha açık bir referans:
%CmdCmdLine%
komut satırının tamamını CMD.EXE'ye aktarıldığı şekilde döndürür
%*
ilk komut satırı argümanından başlayarak komut satırının geri kalanını döndürür (Windows NT 4'te %* önde gelen tüm boşlukları da içerir)
Eğer %n geçerli bir yol veya dosya adı ise (UNC yok) %~dn
%n sürücü harfini döndürür (n 0 ile 9 arasında değişebilir)
Eğer %n geçerli bir yol veya dosya adı ise (UNC yok) %~pn
%n dizinini döndürür
%~nn
yalnızca %n geçerli bir dosya adıysa %n dosya adını döndürür
%~xn
yalnızca %n geçerli bir dosya adıysa %n dosya uzantısını döndürür
Eğer %n geçerli bir dosya adı veya dizin ise %~fn
%n'nin tam nitelikli yolunu döndürür
Az önce gizemli ~
tilde operatörü için iyi bir referans buldum.
%~dizesi [yüzde tilde][4] işleci olarak adlandırılır. Bunu aşağıdaki gibi durumlarda bulabilirsiniz:
%~0`.
:~
dizesine iki nokta üst üste tilde işleci denir. Bunu %SOME_VAR:~0,-1%
şeklinde bulabilirsiniz.
%1-%9
komut satırı argümanlarını ifade eder. Eğer bunlar geçerli yol değerleri değilse, %~dp1
- %~dp9
, %~dp0
ile aynı değere genişleyecektir. Ancak geçerli yol değerleri iseler, kendi sürücü/yol değerlerine genişleyeceklerdir.
Örneğin: (batch.bat)
@echo off
@echo ~dp0= %~dp0
@echo ~dp1= %~dp1
@echo ~dp2= %~dp2
@echo on
D:\Workbench>batch arg1 arg2
~dp0= D:\Workbench\
~dp1= D:\Workbench\
~dp2= D:\Workbench\
D:\Workbench>batch c:\123\a.exe e:\abc\b.exe
~dp0= D:\Workbench\
~dp1= c:\123\
~dp2= e:\abc\
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true
Bir toplu komut dosyasındaki %0
değişkeni, çalıştırılan toplu komut dosyasının adına ayarlanır. %ve
0arasındaki
~dpözel sözdizimi temel olarak
%0` değişkenini sürücü harfini ve yolu gösterecek şekilde genişletmeyi söyler, bu da size toplu iş dosyasını içeren geçerli dizini verir!