Toplu iş dosyasındaki geçerli dizin nedir?


510

Bir programı otomatikleştirmek için birkaç toplu iş dosyası oluşturmak istiyorum.

Benim sorum toplu iş dosyası oluştururken, geçerli dizin nedir? Dosyanın bulunduğu dizin mi yoksa komut isteminde görünen dizinle mi yoksa başka bir şey mi?

Yanıtlar:


1025

Toplu iş dosyanızın içinden:

  • %cd%geçerli çalışma dizinini ifade eder (değişken)
  • %~dp0 toplu iş dosyasının dizininin tam yolunu belirtir (statik)
  • %~dpnx0ve %~f0her ikisi de toplu iş dizininin tam yolunu ve dosya adını (statik) belirtir.

Ayrıca bakınız: % ~ dp0 anlamı ne ve nasıl çalışır?


5
@ --Οеу - %0geçerli altyordamın adını verebilir, ancak %~dp0her zaman yürütme toplu iş dosyasının tam yolunu verecektir.
dbenham

77
Aslında,% ~ dp0 yürütülmekte olan toplu iş dosyasının içinde bulunduğu dizinin tam yolunu verir .% ~ Dpnx0 (% ~ f0'a eşdeğerdir) toplu iş dosyasının tam yolunu verir. Daha fazla bilgi için robvanderwoude.com/parameters.php adresine bakın.
deadlydog

6
Benzer bir sorunun iyi ayrıntılı yanıtlarına da bakın: Windows toplu komut dosyasında (.bat) geçirilen argümanların listesini alın
olibre

1
Ne yazık ki .net% ~ dp0 bir işlem olarak çalıştırıldığında toplu iş dizini değil çalışma dizindir, Bunu zor yoldan buldum.
trampster

3
Daha açık bir örnek olarak, bir .cmddosyaya sağ tıklayıp yönetici olarak çalışırken , toplu iş dosyası dizinini eğik çizgi ile %cd%verir C:\WINDOWS\system32ve %~dp0verir.
icc97

25

Bu genellikle toplu iş dosyası başlatılır hangi dizin, ancak bir kısayol toplu iş dosyasını başlarsanız, farklı bir başlangıç dizini verilebilir. Ayrıca, cmd'deyken ve geçerli dizininiz olduğunda c:\dir3, toplu iş dosyasını yine c:\dir1\dir2\batch.batde bu durumda geçerli dizini kullanarak başlatabilirsiniz c:\dir3.


11

Bir toplu iş dosyasında, kendi değişkeninizi ayarlayabilseniz de,% cd% geçerli dizin için en sık kullanılan komuttur:

set mypath=%cd%
echo %mypath% (where %mypath% is the current directory that the batch file is sitting in)

Diyelim ki Myprog.exe dosyasını açmak istiyorsunuz. Aynı klasördeyse şu komutu kullanırsınız:

start %mypath%\Myprog.exe

Bu, Myprog'u geçerli klasörden açar.

Diğer seçenek C: 'de AutomatePrograms adlı bir dizin yapmaktır. Ardından, dosyalarınızı bu klasöre aktarırsınız ve ardından aşağıdaki komutu kullanarak açabilirsiniz:

start "" "C:\AutomatePrograms\Myprog1.exe"
start "" "C:\AutomatePrograms\Myprog2.exe"
start "" "C:\AutomatePrograms\Myprog3.exe"

1
Burada üst yanıtta belirtildiği gibi %cd%, değişkendir, bu nedenle toplu iş dosyasını yönetici olarak Windows Gezgini'nden çalıştırmak C:\WINDOWS\system32, neredeyse istediğiniz şey değildir. %~dp0daha tutarlıdır.
icc97

6

Mevcut dizininizde bir dosya açtığınızı varsayalım. Komut şöyle olur:

 start %cd%\filename.filetype

Umarım sorunuzu cevapladım.


5

Bu, toplu iş dosyanızı yürütmek için komutu çalıştırdığınız dizindir.

Yukarıdaki yanıtlarda belirtildiği gibi, doğrulamak için betiğinize aşağıdaki komutu ekleyebilirsiniz:

> set current_dir=%cd%
> echo %current_dir%  

4

Bu, toplu iş dosyasını başlattığınız dizindir. Örneğin, toplu işiniz içindeyse c:\dir1\dir2ve yaparsanız cd c:\dir3, toplu işi çalıştırın, geçerli dizin olacaktır c:\dir3.


0

Sadece 2 sentim. Pendrive'a yerleştirilen toplu iş dosyasından (Windows 7) çağrılırsa aşağıdaki komut başarısız olur:

xcopy /s /e /i %cd%Ala C:\KS\Ala

Ama bu işi yapar:

xcopy /s /e /i %~dp0Ala C:\KS\Ala

Ben bu toplu iş dosyası adı olmadan benim bat dosya üst dizin yolunu belirlemek için aradığım anahtarı:%~dp0
Ammar Mohammad
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.