Microsoft Windows [Sürüm 6.1.7601]
Telif Hakkı (c) 2009 Microsoft Corporation. Tüm hakları saklıdır.
C:\Windows\System32>set /?
cmd.exe çevre değişkenlerini görüntüler, ayarlar ya da kaldırır.
SET [değişken=[dize]]
değişken Çevre değişkeninin adını belirtir.
dize Değişkene atanacak olan karakter serisini belirtir.
Geçerli çevre değişkenlerini görüntülemek için parametresiz olarak SET yazın.
Komut Uzantıları etkinse, SET aşağıdaki şekilde değişir:
Hiçbir eşit işareti ya da değer olmadan yalnızca bir değişken adı tarafından çağrılan SET komutu, kendisine verilen adla eşleşenöneke sahip tüm değişkenlerin değerini görüntüler.
Örneğin:
SET P
'P' harfiyle başlayan tüm değişkenleri görüntüleyebilir
Geçerli çevrede değişken adı bulunamıyorsa, SET komutu ERRORLEVEL'ı 1'e ayarlar.
SET komutu, eşittir işaretinin bir değişken adının parçası olmasına olanak vermez.
SET komutunu iki yeni anahtar eklendi:
SET /A ifade
SET /P variable=[promptString]
/A anahtarı eşit işaretinin sağındaki dizenin değerlendirilen bir sayısal deyim olduğunu belirtir. Deyim değerlendiricisi oldukça basit olup aşağıdaki işlemleri, azalan üstünlük sırasına göre destekler:
() - gruplama
! ~ - - birli işleçler
* / % - aritmetik işleçler
+ - - aritmetik işleçler
<< >> - mantıksal kaydırma
- bit düzeyinde and
^ - bit düzeyinde xor
| - bit düzeyinde or
= *= /= %= += -= - atama
&= ^= |= <<= >>=
, - ifade ayırıcı
Mantık ya da modül işleçlerinden birini kullanırsanız, deyim dizesini
tırnak işaretleri arasında ekine koymanız gerekir. Deyimdeki
sayısal olmayan dizeler, değerleri kullanılmadan önce sayıya
dönüştürülen çevre değişkenleri olarak kabul edilir. Bir çevre
değişkeni belirtildiği halde geçerli çevrede belirtilmezse, sıfır değeri
kullanılır. Bu sayede, ortam değişkeniyle değerlerini almak için
tüm % işaretlerini yazmaya gerek kalmadan aritmetik işlemleri
yapılabilir. Bir toplu iş dosyası dışından, SET /A komut satırından
yürütülürse, deyimin son değeri görüntülenir. Atama işleci, atama
işlecinin soluna bir ortam değişkeni adı gerektirir. Onaltılık sayılar
için 0x, sekizlik sayılar için 0 önekiyle kullanılmadığı sürece,
sayısal değerler ondalık sayıdır.
Böylece, 0x12, 18 ve 022 ile aynıdır. Sekizlik yazımın karmaşık olabileceğini
unutmayın: 8 ile 9 geçerli sekizlik hane olmadığından 08 ile 09 geçerli
sayı değildir.
/P anahtarı, bir değişken değerini kullanıcı tarafından girilen bir girdi
satırına ayarlamanızı sağlar. giriş satırını okumadan önce, belirtilen
promptString görüntülenir. promptString boş olabilir.
Ortam değişkeni değiştirmesi aşağıdaki şekilde artırılmıştır:
%PATH:str1=str2%
genişletilen sonuçtaki her "str1" geçtiğinde "str2" ile değiştirerek,
PATH ortam değişkenini genişletir. Genişletilen çıktıdan "str1" geçen
yerlerin tümünü etkili şekilde silmek için "str2" boş bir dize olabilir.
"str1" bir joker karakteriyle başlayabilir; bu durumda, genişletilen
çıktının başlangıcından str1'in kalan bölümündeki ilk geçtiği yere dek
her şeyle eşleşir.
Bir genişletme için alt dize de belirtebilir.
%PATH:~10,5%
PATH ortam değişkenini genişleterek, genişletilmiş olan sonucun
11. (ofset 10) karakterinde başlayan 5 karakteri
kullanır. Uzunluk belirtilmediyse, kalan değişken değere
varsayılan olarak ayarlanır. Her iki sayıdan biri (ofset ya da uzunluk)
eksi ise, ortam değişkeni uzunluğunda kullanılan değer ofsete ya da
belirtilen uzunluğa eklenir.
%PATH:~-10%
PATH değişkeninin son 10 karakterini çıkarır.
%PATH:~0,-2%
PATH değişkeninin yalnızca son 2 karakterini çıkarır.
Sonunda, geciken ortam değişkeni genişletmesi desteği
eklendi. Bu destek varsayılan olarak her zaman devre dışıdır; ancak
CMD.EXE'ye /V komut satırı anahtarıyla etkinleştirilebilir/devre dışı
bırakılabilir. Bkz. CMD /?
Geciken ortam değişkeni genişletmesi, bir metnin satırı yürütülmek yerine
okunduğunda oluşan geçerli genişletme sınırlamalarının üstesinden gelir.
Aşağıdaki örnek, yakındaki değişken genişlemesiyle olan
sorunu göstermektedir:
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "%VAR%" == "after" @echo Bunu görürseniz işe yaramıştır
)
iletiyi asla görüntülemez; her iki IF tümcesindeki %VAR%
ilk IF tümcesi okunduğunda değiştirildiğinden, mantık olarak
bileşik tümce olan IF gövdesini içerir. Böylece
bileşik tümce içindeki IF, gerçekten hiçbir zaman eşit olmayacak olan
"before" ile "after" öğesini karşılaştırır. Aynı şekilde, aşağıdaki
örnek de beklendiği gibi çalışmaz:
set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%
burada, geçerli dizinde dosya listesi oluşturmak yerine,
bulunan en son dosyaya LIST değişkenini ayarlar.
Yine, bunun nedeni, %LIST% öğesinin FOR tümcesi okunduğunda
genişletilmesi ve o sırada LIST değişkeninin boş olmasıdır.
Bu durumda, yürüttüğümüz gerçek FOR döngüsü şudur:
for %i in (*) do set LIST= %i
bu yalnızca bulunan son dosyaya LIST ayarını belirler.
Geciken ortam değişkeni genişletmesi, yürütme anında çevre
değişkenlerini genişletmeniz için farklı karakter (ünlem işareti)
kullanmanıza olanak sağlar. Geciken değişken genişletmesi etkinse,
yukarıdaki örnekler çalışması için aşağıdaki şekilde yazılabilir:
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo Bunu görürseniz işe yaramıştır
)
set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%
Komut Uzantıları etkinse, genişletilebildiği halde SET ile birkaç
görüntülenen değişkenlerle görünmeyen
dinamik ortam değişkeni vardır. Bu değişken değerleri
değişken değerinin genişletildiği her defada dinamik olarak hesaplanır.
Kullanıcı açıkça bu adlarla bir değişken tanımlarsa,
söz konusu tanım aşağıda tanımlanan dinamik olanı etkisiz kılar:
%CD% - geçerli dizin dizesine genişletir.
%DATE% - DATE komutuyla aynı biçimi kullanarak geçerli tarihe genişletir.
%TIME% - TIME komutuyla aynı biçimi kullanarak geçerli saate genişletir.
%RANDOM% - 0 ile 32767 arası herhangi bir ondalık sayıya genişletir.
%ERRORLEVEL% - Geçerli ERRORLEVEL değerine genişletir
%CMDEXTVERSION% - Geçerli Komut İşlemci Uzantıları sürüm numarasına
genişletir.
%CMDCMDLINE% - Komut İşlemcisi'ni çağıran özgün komut satırına genişletir.
%HIGHESTNUMANODENUMBER% - bu makinedeki en yüksek NUMA düğüm numarasına
genişletir.
C:\Windows\System32>