Komut İstemi - Yalnızca bu toplu iş dosyasının yürütülmesi için bir ayar yolu nasıl eklenir?


187

Temel olarak, kontrol panelimden geçebileceğimi ve yol değişkenini değiştirebileceğimi biliyorum. Ancak, toplu programlama yoluyla geçici bir yol dahil etmek için bir yol olup olmadığını merak ediyorum? Bu şekilde yalnızca bu toplu iş dosyası yürütme sırasında kullanılır. Kullanıcıların sadece toplu iş dosyamı kullanmak için yol değişkenlerini değiştirmelerini istemiyorum.

Yanıtlar:


318

Tıpkı diğer ortam değişkenleri gibi SET:

SET PATH=%PATH%;c:\whatever\else

Önce küçük bir güvenlik kontrolü yaptırmak istiyorsanız, önce yeni yolun mevcut olup olmadığını kontrol edin:

IF EXIST c:\whatever\else SET PATH=%PATH%;c:\whatever\else

Bu toplu iş dosyası için yerel olmasını istiyorsanız, şunu kullanın setlocal:

setlocal
set PATH=...
set OTHERTHING=...

@REM Rest of your script

setlocal/ İçin belgeleri dikkatlice endlocalokuyun ve o sitedeki diğer referanslara bir göz atın - İşlevler de oldukça ilginç ve sözdizimi zor.

Sözdizimi sayfası temelleri ile başlamak gerekir.


3
setlocalToplu iş dosyanıza bir eklerseniz , yol yalnızca dosyada görünür
jeb

"setlocal" eklensin mi? Bu "SET" yerine mi?
michael

@micheal: Cevabımı bağlantılar ile güncelledi. Lütfen cmd komut dosyası oluşturma ile ilgili bazı belgeleri / örnekleri / öğreticileri okuyun SET.
Mat

2
Hayat kurtarıcı. Yeniden başlatılamayan bir sunucuya bir EV eklemek gerekiyordu ve bu bana bir yeniden başlatma zamanlamak zorunda kalmadan ihtiyacım olanı yapmamı sağlıyor!
dav_i

8
Olmadan bile SETLOCAL, en fazla, sadece o bireysel komut istemi oturumu için olacak - bunu birden fazla toplu iş dosyasından yapıyorsanız ve kullanıyorsanız EXIT /B %N%, SETLOCALtemel olarak komut dosyası çıktığında değişikliklerinizi dökecektir. : - /
BrainSlugs83

21

Önemli bir detay var:

set PATH="C:\linutils;C:\wingit\bin;%PATH%"

çalışmazken

set PATH=C:\linutils;C:\wingit\bin;%PATH%

İşler. Fark tırnak işaretleri!

UPD ayrıca venimus'un yorumuna da bakınız


3
aslında SET "PATH=...%PATH%"yolda var olan boşluklar hatalara veya hatalı davranışlara neden olacaktır. Bunun gibi tırnak işaretleri içine alındığında, bunlar dahil edilmez ancak değişkeni düzgün şekilde ayarlar. Aynı diğer env değişkenleri için de geçerlidir.
venimus

20

Bu doğru, ancak kalıcı olarak değişmez, ancak sadece geçerli komut istemi için, kalıcı olarak değiştirmek isterseniz, örneğin bunu kullanmanız gerekir:

setx ENV_VAR_NAME "DESIRED_PATH" /m

Bu kalıcı olarak değişecektir ve evet başka bir toplu komut dosyası üzerine yazabilirsiniz.


Belki /mpeşinde olmalısın setx?
suzanshakya

Benim için aynı şekilde çalışıyor, ancak bu Win Batch Scripting, MS'den biraz bitmemiş bir iş. Aynı sisteme sahip tüm dizüstü bilgisayarlara sahip olduğum şirketimde PATH ayarı için evrensel bir komut dosyası yok ve 2 veya 3 tanesini koruyoruz, bu yüzden sizin için ne işe yararsa :)
dumbak

Güncelleme için teşekkürler. Windows Server 2012'de, /msonuna koyduğumda , DESIRED_PATHyalnızca geçerli kullanıcı için sonunda / m ile eklendi.
suzanshakya

11
Uyarı kelimesi. Bir yol üzerinde setx kullanarak, ona daha fazla eklemeye çalışıyorum ve dize> 1024 uzunluğunda, sonucun (ortamım PATH) kalıcı olarak kesildiğini keşfettim. (Değişiklikten önce dışarı çıkardığım% PATH% 'i kopyalayabildim ve Ortam değişkenleri pencere aracını kullanarak geri koydum.)
Andreas Jansson

Dikkat! Bu komut doğrudan Sistem Ortamı Değişkeni'nin üzerine yazılır! Onları sildim ve düzeltmeye çalıştım. Ve ayrıca bu hatayı yapan herkes için: bilgisayarınızı yeniden başlatmayın. Yazın echo %path%ve yüklenen geçerli yolu alırsınız. Kullanıcı ve Sistem ortam değişkenlerini birbirinden ayırmanız gerekir. Ardından bunları doğru yere manuel olarak uygulayabilirsiniz.
Alper
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.