web-gelistirme-sc.com

Windows toplu iş dosyası başlangıç ​​dizini 'admin olarak çalıştır'

Bir dizinde olan ve bu dizinde bulunan dosyaları güncelleştirdiği için oradan da çalıştırılması gereken bir toplu iş dosyasına sahibim.
Bu, kullanıcının toplu iş dosyasını yönetici olarak çalıştırdığı durumlar dışında (Vista'da gerekli) mükemmel bir şekilde çalışır. Daha sonra başlangıç ​​dizini C:\Windows\System32 şeklindedir.

Toplu iş dosyasının hangi dizinden çalıştırıldığını hala bilmenin bir yolu var mı?
Kullanıcının dizine elle girmesini istemiyorum.

64
Marc

Toplu iş dosya yoluna şu şekilde erişmeyi deneyin:

echo %~dp0

Daha fazla bilgi için, yukarıdaki komutun nasıl çalıştığını açıklayan for /? komutundan aşağıdaki alıntıya bakın:

 Şimdi aşağıdaki isteğe bağlı sözdizimini kullanabilirsiniz: 

 % ~ I ​​-% I çevreleyen tırnak işaretlerini kaldırırım (") 
% ~ FI -% I değerini tamamen nitelenmiş bir yol adına genişletir 
% ~ DI -% I değerini yalnızca sürücü harfine genişletir. pI -% I değerini yalnızca bir yola genişletir 
% ~ nI -% I değerini yalnızca dosya adına genişletir 
% ~ xI -% I öğesini yalnızca bir dosya uzantısına genişletir 
% ~ sI - genişletilmiş yol sadece isimleri 
% ~ aI -% I dosyasını file 
% ~ tI dosyasını dosya özniteliklerine genişletir -% I dosyasını file 
 /% 'ya genişletir. % ~ $ PATH: I - PATH 
 Ortam değişkeninde listelenen dizinleri arar ve% I değerini, bulunan ilk adın 
 Tam adına genişletir
 Ortam değişken adı .__ değilse. tanımlanmış veya dosya 
 araması tarafından bulunamamıştır, daha sonra bu değiştirici, 
 empty string 
.__ 'a genişler. Bileşik sonuçlar elde etmek için birleştirilebilir: % ~ dpI -% I değerini yalnızca sürücü harfine ve yoluna genişletir 
 % ~ nxI -% I dosyasını bir dosya adı ve uzantıya genişletir, yalnızca 
 % ~ fsI -% I öğesini yalnızca kısa adlarla dolu bir yol adına genişletir 
 % ~ dp $ PATH: I - PATH .__ 'da listelenen dizinleri arar. % I için ortam değişkeni ve 
 ilk harfin sürücü harfi ve yolu bulundu .
 % ~ ftzaI -% I değerini DIR değerine benzer bir DIR değerine genişletir.
89
Martin

cd daha iyidir pushd olan

  • D:\...'dan başlıyorsa sürücü harfini değiştirin
  • uNC ağ yolundaysa bir sürücü harfi atama

Yani pushd %~dp0 iyidir.

İyi uygulama daha sonra bittiğinde popd çağırmaktır.

38
Benoit

Bu, toplu iş dosyası için çalışma dizinini geçerli dizine geri ayarlayarak sorununuzu çözmelidir:

Bu iki satırı .bat komut dosyanızın en üstüne ekleyin: 

@setlocal enableextensions
@cd /d "%~dp0"

Bulunan: http://www.codeproject.com/Tips/119828/Running-a-bat-file-as-administrator-Correcting-cur

25
NMrt

Kullanırım:

cd% 0 ..

toplu iş dosyasının başında, toplu iş dosyasının başlatıldığı dizine dizin değiştirmek için kullanılır.

-Mathew

1
Mathew

Üst öğeyi ekleyerek doğrudan dosya adından CD yazabilirsiniz (windows 8.x'te test edilmemiştir, ancak hatırlayabildiğim kadarıyla "sonsuza kadar çalışmıştır).

CD %FILENAME%\..

ve CD, yukarıda gösterilen, ancak açıkça belirtilmeyen/D'yi kullanarak sürücüleri de değiştirecektir, bu yüzden kaçırılmış olabilir . CD/D% FILENAME%\..

(FOR /?IF /?SET /?CALL /?GOTO /?all, cmd.exe kullanıyorsanız hepsi çok yararlı bir okuma sağlar, arada bir okurum .)

0
Malcolm