Windows toplu iş dosyalarındaki değişkenler neden kaldırılıyor?


13

Windows toplu iş dosyalarında kullanılan değişkenleri boşaltmak gerekli mi yoksa iyi bir uygulama mıdır?
Örneğin, aşağıdaki kodda, set myFolder=sonunda son gerekli mi?

@echo off
set myFolder="C:\Temp\Batchfiles"
echo %myFolder%

set myFolder=

Bunu çevrimiçi birçok yerde gördüm, kesinlikle toplu iş dosyası bittiğinde değişkenler otomatik olarak kaldırılır?

Yanıtlar:


33

SETküresel bir ortam değişkeni belirler. Komut dosyanız yürütüldükten sonra da devam eder.

Bir örneğe bakalım.
İlk olarak, değişken olmadığından emin olmak için değişkeni temizlerim.

C:\Users\Oliver\Desktop>set TEST=

Hızlı bir test:

C:\Users\Oliver\Desktop>echo %TEST%
%TEST%

Şimdi bu toplu iş dosyasını oluşturalım ve yürütelım:

C:\Users\Oliver\Desktop>echo set TEST=something>test.bat
C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>set TEST=something

Dosyamın yürütülmesinden sonra TEST'in değerini görelim .bat:

C:\Users\Oliver\Desktop>echo %TEST%
something

Yani, evet, senaryonun sonunda değişkeni temizlemek iyi bir uygulamadır.


Daha da iyisi , tüm problemi kullanmak SETLOCALve ENDLOCALönlemek.

İşte, yeni oluşturulan .batkullanımlar dosyayı SETLOCALve ENDLOCAL:

C:\Users\Oliver\Desktop>type test.bat
setlocal
set TEST=something
endlocal

Temizlemeye TESTbaşladığımızdan emin olmak için temizleyelim ve yankılayalım:

C:\Users\Oliver\Desktop>set TEST=
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%

Harika, şimdi yeniyi çalıştıralım .bat:

C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>setlocal
C:\Users\Oliver\Desktop>set TEST=something    
C:\Users\Oliver\Desktop>endlocal

Şimdi TESTboş kalacak:

C:\Users\Oliver\Desktop>echo %TEST%
%TEST%

2
+! açıklama için
Raystafarian

1
Harika bir örnek ve açıklama - teşekkürler
ChrisB
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.