Env değişkenini yerel olarak toplu iş dosyasıyla değiştirme kısıtlama


0
  • İki toplu iş dosyası var x.bat ve y.bat.
  • Xbat’tan y.bat’ı arıyorum.
  • Y.bat dosyası şu gibi bir env değişkenini ayarlar: set ABC =
  • Kısıtlama bu Y.bat dosyasını değiştiremiyorum ancak değişkenim "ABC" nin başka bir şey olarak ayarlanmasını istiyorum.
  • "ABC" yi X.bat'ta nasıl ayarlayabilirim, böylece y.bat dosya kümesi komutu tarafından geçersiz kılınır.

Yanıtlar:


0

Toplu işinizde ABC'yi başka bir var olarak ayarlayın. Bunu aşağıdaki gibi yapabilirsiniz:

set DEF=%ABC%

Bir örnek:

set ABC=testing
set DEF=%ABC%
set ABC=changed

echo %ABC%
:: prints: changed

echo %DEF%
:: prints: testing

Değişken adının değişmesini istemiyorum, çünkü bağımlılıkları var. Bunun yerine set komutunun Y.bat'ta herhangi bir değişiklik yapmadan Y.bat'ta okunmasını istemiyorum.
RISHABH RASTOGI

Bu imkansız.
LPChip

Elbette var çalıştırdıktan sonra geri ayarlayabilirsiniz. Fakat eğer X.bat bu değeri değiştirirse, X.bat'i Y.bat'ta belirttiğiniz değeri kullanmaya zorlayamazsınız.
LPChip

0

y.batDeğişkendeki değeri değiştirmekten kaçınamazsınız . Ortam değişkenleri sabit olarak tanımlanamaz, salt okunur veya yazmaya karşı korumalı olarak işaretlenemez. Çağrılan toplu iş dosyası değişkeni değiştirirse ve toplu iş dosyasını değiştiremezseniz, değişiklikten kaçınamazsınız.

Kaçınılabileceğiniz tek şey, değişkeni etkileyecek değişkenin yayılmasıdır. x.bat

x.bat

@echo off

    set "abc=set from x.bat"

    setlocal
    call y.bat
    endlocal

    echo %abc%

y.bat

@echo off
    set "abc=changed value"

setlocalçevre alanının bir kopyasını oluşturur ve bu kopyayı aktif olarak ayarlayın. Tüm değişiklikler bu kopyada endlocal, kopyayı atar ve bir önceki ortamı geri yükler.

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.