C:\WINDOWS>HELP SET
cmd.exe çevre degiskenlerini görüntüler, ayarlar ya da kaldirir.
SET
[degisken=
[dize
]] degisken Çevre degiskeninin adini belirtir.
dize Degiskene atanacak olan karakter serisini belirtir.
Geçerli çevre degiskenlerini görüntülemek için parametresiz
olarak SET yazin.
Komut Uzantilari etkinse, SET asagidaki sekilde degisir:
Hiçbir esit isareti ya da deger olmadan yalnizca bir degisken adi
tarafindan çagrilan SET komutu, kendisine verilen adla eslesen
öneke sahip tüm degiskenlerin degerini görüntüler. Örnegin:
SET P
'P' harfiyle baslayan tüm degiskenleri görüntüleyebilir
Geçerli çevrede degisken adi bulunamiyorsa, SET komutu
ERRORLEVEL'i 1'e ayarlar.
SET komutu, esittir isaretinin bir degisken adinin parçasi
olmasina olanak
vermez.
SET komutunu iki yeni anahtar eklendi:
SET /A ifade
SET /P variable=
[promptString
]/A anahtari esit isaretinin sagindaki dizenin
degerlendirilen bir sayisal deyim oldugunu belirtir. Deyim
degerlendiricisi
oldukça basit olup asagidaki islemleri, azalan üstünlük sirasina
göre destekler:
() - gruplama
! ~ - - birli isleçler
* / % - aritmetik isleçler
+ - - aritmetik isleçler
<< >> - mantiksal kaydirma
- bit düzeyinde and
^ - bit düzeyinde xor
| - bit düzeyinde or
= *= /= %= += -= - atama
&= ^= |= <<= >>=
, - ifade ayirici
Mantik ya da modül isleçlerinden birini kullanirsaniz, deyim
dizesini
tirnak isaretleri arasinda ekine koymaniz gerekir. Deyimdeki
sayisal olmayan dizeler, degerleri kullanilmadan önce sayiya
dönüstürülen çevre degiskenleri olarak kabul edilir. Bir çevre
degiskeni belirtildigi halde geçerli çevrede belirtilmezse, sifir
degeri
kullanilir. Bu sayede, ortam degiskeniyle degerlerini almak için
tüm % isaretlerini yazmaya gerek kalmadan aritmetik islemleri
yapilabilir. Bir toplu is dosyasi disindan, SET /A komut
satirindan
yürütülürse, deyimin son degeri görüntülenir. Atama isleci,
atama
islecinin soluna bir ortam degiskeni adi gerektirir. Onaltilik
sayilar
için 0x, sekizlik sayilar için 0 önekiyle kullanilmadigi sürece,
sayisal degerler ondalik sayidir.
Böylece, 0x12, 18 ve 022 ile aynidir. Sekizlik yazimin karmasik
olabilecegini
unutmayin: 8 ile 9 geçerli sekizlik hane olmadigindan 08 ile 09
geçerli
sayi degildir.
/P anahtari, bir degisken degerini kullanici tarafindan girilen
bir girdi
satirina ayarlamanizi saglar. Girdi satirini okumadan önce,
belirtilen
promptString görüntülenir. promptString bos olabilir.
Ortam degiskeni degistirmesi asagidaki sekilde artirilmistir:
%PATH:str1=str2%
genisletilen sonuçtaki her "str1" geçtiginde "str2" ile
degistirerek,
PATH ortam degiskenini genisletir. Genisletilen çiktidan "str1"
geçen
yerlerin tümünü etkili sekilde silmek için "str2" bos bir dize
olabilir.
"str1" bir joker karakteriyle baslayabilir; bu durumda,
genisletilen
çiktinin baslangicindan str1'in kalan bölümündeki ilk geçtigi
yere dek
her seyle eslesir.
Bir genisletme için alt dize de belirtebilir.
%PATH:~10,5%
PATH ortam degiskenini genisleterek, genisletilmis olan sonucun
11. (ofset 10) karakterinde baslayan 5 karakteri
kullanir. Uzunluk belirtilmediyse, kalan degisken degere
varsayilan olarak ayarlanir. Her iki sayidan biri (ofset ya da
uzunluk)
eksi ise, ortam degiskeni uzunlugunda kullanilan deger ofsete ya
da
belirtilen uzunluga eklenir.
%PATH:~-10%
PATH degiskeninin son 10 karakterini çikarir.
%PATH:~0,-2%
PATH degiskeninin yalnizca son 2 karakterini çikarir.
Sonunda, geciken ortam degiskeni genisletmesi destegi
eklendi. Bu destek varsayilan olarak her zaman devre disidir;
ancak
CMD.EXE'ye /V komut satiri anahtariyla etkinlestirilebilir/devre
disi
birakilabilir. Bkz. CMD /?
Geciken ortam degiskeni genisletmesi, bir metnin satiri
yürütülmek yerine
okundugunda olusan geçerli genisletme sinirlamalarinin üstesinden
gelir.
Asagidaki örnek, yakindaki degisken genislemesiyle olan
sorunu göstermektedir:
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "%VAR%" == "after" @echo Bunu görürseniz ise
yaramistir
)
iletiyi asla görüntülemez; her iki IF tümcesindeki %VAR%
ilk IF tümcesi okundugunda degistirildiginden, mantik olarak
bilesik tümce olan IF gövdesini içerir. Böylece
bilesik tümce içindeki IF, gerçekten hiçbir zaman esit olmayacak
olan
"before" ile "after" ögesini karsilastirir. Ayni sekilde,
asagidaki
örnek de beklendigi gibi çalismaz:
set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%
burada, geçerli dizinde dosya listesi olusturmak yerine,
bulunan en son dosyaya LIST degiskenini ayarlar.
Yine, bunun nedeni, %LIST% ögesinin FOR tümcesi okundugunda
genisletilmesi ve o sirada LIST degiskeninin bos olmasidir.
Bu durumda, yürüttügümüz gerçek FOR döngüsü sudur:
for %i in (*) do set LIST= %i
bu yalnizca bulunan son dosyaya LIST ayarini belirler.
Geciken ortam degiskeni genisletmesi, yürütme aninda çevre
degiskenlerini genisletmeniz için farkli karakter (ünlem isareti)
kullanmaniza olanak saglar. Geciken degisken genisletmesi
etkinse,
yukaridaki örnekler çalismasi için asagidaki sekilde yazilabilir:
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo Bunu görürseniz ise
yaramistir
)
set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%
Komut Uzantilari etkinse, genisletilebildigi halde SET ile birkaç
görüntülenen degiskenlerle görünmeyen
dinamik ortam degiskeni vardir. Bu degisken degerleri
degisken degerinin genisletildigi her defada dinamik olarak
hesaplanir.
Kullanici açikça bu adlarla bir degisken tanimlarsa,
söz konusu tanim asagida tanimlanan dinamik olani etkisiz kilar:
%CD% - geçerli dizin dizesine genisletir.
%DATE% - DATE komutuyla ayni biçimi kullanarak geçerli tarihe
genisletir.
%TIME% - TIME komutuyla ayni biçimi kullanarak geçerli saate
genisletir.
%RANDOM% - 0 ile 32767 arasi herhangi bir ondalik sayiya
genisletir.
%ERRORLEVEL% - Geçerli ERRORLEVEL degerine genisletir
%CMDEXTVERSION% - Geçerli Komut Islemci Uzantilari sürüm
numarasina
genisletir.
%CMDCMDLINE% - Komut Islemcisi'ni çagiran özgün
komut satirina genisletir.
C:\WINDOWS>HELP SETLOCAL
Bir toplu is dosyasindaki ortam degisikliklerinin
yerellestirmesine baslar.
SETLOCAL komutu kullanildiktan sonra yapilan ortam degisiklikleri
toplu is
dosyasinda yerel olarak geçerli olur. Önceki ayarlari geri
yüklemek için
ENDLOCAL komutu kullanilmalidir. Bir toplu komut dosyasinin
sonuna
erisildiginde, bu toplu komut dosyasinda kullanilan her SETLOCAL
komutu için
gösterilmeyen bir ENDLOCAL komutu yürütülür.
SETLOCAL
Komut Uzantilari etkinse, SETLOCAL asagidaki sekilde degisir:
SETLOCAL toplu is dosyasi komutu artik seçenege bagli
parametreleri
kabul ediyor:
ENABLEEXTENSIONS / DISABLEEXTENSIONS
komut islemci uzantilarini etkinlestirin ya da devre
disi
birakin. Ayrinti için bkz. CMD /?.
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
geciken ortam degiskeni genislemesini etkinlestirin
ya da
devre disi birakin. Ayrinti için bkz. SET /?.
Bu degistirmeler, komutu,
SETLOCAL komutu öncesindeki ayarina bakmaksizin eslesen en son
ENDLOCAL
komutuna dek sürer.
SETLOCAL komutu, ERRORLEVEL degerini, bir parametre verildiyse
ayarlar. Geçerli iki parametreden biri verili digeri
verilmediyse
sonuç sifir olur. Bunu, toplu is dosyalari içinde
asagidaki teknigi kullanan uzantilarin hazir olup olmadigina
karar vermek için kullanabilirsiniz:
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo uzantilar etkinlestirilemiyor
Bunun çalisma nedeni, CMD.EXE, SETLOCAL eski sürümünün
ERRORLEVEL degerini ayarlamamasidir. Kötü parametreli VERIFY
komutu
ERRORLEVEL degerini sifir olmayan bir degere baslatir.
C:\WINDOWS>HELP SHIFT
Bir toplu is dosyasindaki degisen parametre konumlarini
degistirir.
SHIFT
[/n
]Komut Uzantilari etkinse, SHIFT komutu, /n anahtarini destekler.
Bu anahtar,
komuta n. yordamda degistirmeye baslamasini bildirir; bu durumda
n,
sifir ile sekiz olabilir. Örnegin:
SHIFT /2
%3 ögesini %2 ögesine, %4 ögesini %3 ögesine vb. degistirip
%0 ile %1 ögelerine etkilenmeden birakabilir.