Yürütülmekte olan toplu komut dosyasını içeren dizini alın


30

Kullandığım %0toplu dosyasının içeren dizini almak için toplu dosyasında ama sonucudur: -

c:\folder1\folder2\batch.bat

Sadece dizini istiyorum, toplu iş dosyası adı olmadan, şöyle: -

c:\folder1\folder2\

Nasıl yapabilirim? Belki de yolu filtrelemeliyim. Evet ise, nasıl yapabilirim?


Bir toplu iş dosyasında% 0 komut satırının bir parçası olarak kullanırken,% 0 \ .. \ RestOfStuff kullanmanız gerekir. Çift nokta, dosya adını geri alır.
John Gardeniers

Yürütülmekte olan betiği içeren dizin mutlaka geçerli çalışma dizini (CD) ile aynı değildir! Soruyu buna göre düzenledim - artık "geçerli dizin" terimini kullanmaktan kaçınıyor.
chiccodoro

Yanıtlar:


52
%~p0

Yalnızca yolu döndürür.

%~dp0

Sürücü + yolunu döndürür.

Konuyla ilgili daha fazla bilgiyi Microsoft'un sitesinde bulabilirsiniz .

Bu sözdizimi hakkında bilgi , bir Windows işletim sistemi üzerinde yürüterek for komutu yardımında da bulunabilir for /?.


2
Başka bir referans kaynağı olarak, aynı değişken değişkenleri listesi de yazılırken gösterilirfor /?
Kevin

% ~ dp0, yürütülen toplu iş dosyasının dizinini verir. Toplu iş dosyası farklı bir dizindeyse, bu diğer dizini alırsınız. % CD% her zaman geçerli dizini verir.
Mihai Danila,

@MihaiDanila, hayır, OP'nin sorduğu şey bu değil.
Bart De Vos

Aslında şu anki dizini elde etmenin bir yolunu ararken bu soruya geldim . Bu Google’da ilk hit oldu. Başlık , içerik konusunda haklı olmanıza rağmen açıkça geçerli dizini söylüyor . İkimiz de haklıyız ama bence yalan söylüyorum ve ben neyin kastedildiğine rağmen sorunun gerçekte ne aktardığı konusunda daha haklıyım. Bu yüzden lain'in cevabını yükselttim ... Soru başlığı, kendisiyle senkronize olacak şekilde yeniden adlandırılmalıdır.
Mihai Danila,

1
Bağlantıdaki yazı geçerli olmadığından muhtemelen bağlantıdaki makalenin başlığı sağlanmış olabilir .....
Rupsingh Mathwale

16

Geçerli dizin% CD% içinde tutulur


4
% CD% ondan toplu yürütme yolunu reture değil nerede toplu iş dosyası exist
Mohammad AL-Rawabdeh

4
@Mohammad: Gerçekten, şu anki dizin. Diğeri ise toplu iş dosyasının bulunduğu dizindir. Bu ikisi aynı değil ve sorunuz açıkça bunun için soruyor. Yani, demek istediğin bu değilse lütfen düzenle.
Joey

% CD%, toplu iş dosyasının geçerli yolunu döndürür, ancak toplu iş dosyasını yönetici olarak çalıştırdığımızda başarısız olur. Toplu iş dosyasını yönetici olarak çalıştırdığımızda, System32 yolunu döndürür. Yani daha iyi seçenek tam yol için% ~ dp0 kullanmaktır

% ~ dp0, yürütülen toplu iş dosyasının dizinini verir. Toplu iş dosyası farklı bir dizindeyse, bu diğer dizini alırsınız. % CD% her zaman geçerli dizini verir.
Mihai Danila,

Okuyucunun referansı için - soru asıl olarak "current directory" terimini kullanıyordu, ancak betiği içeren dizin - bu şimdi düzeltildi.
chiccodoro

4

Dosya adını etkileyen bazı ifadeler:

~f0tam nitelikli dosya adını verecektir.
~dpnx0aynısını verir ~f0, ancak bu size parçalara ayırabileceğinizi gösterir: d = sürücü p = yol n = ad x = uzantı


0

chdir komutunu kullan

Seçenek 1:

chdir 

Seçenek 2:

echo %CD%

Burada da aynı: Bu OP'nin niyeti değildi - soru şimdi daha açık.
chiccodoro
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.