CMD kabuğunda aşağıdakileri çalıştırdığımı varsayalım:
SET "FOO=bar"
CMD kabuğunu geri dönüştürmek dışında bu değişkeni tanımlamanın bir yolu var mı?
CMD kabuğunda aşağıdakileri çalıştırdığımı varsayalım:
SET "FOO=bar"
CMD kabuğunu geri dönüştürmek dışında bu değişkeni tanımlamanın bir yolu var mı?
set var=
cevabınız MS-DOS 6.22 command.com altında Windows cmd.exe altında olduğu gibi çalışır. (Bununla birlikte, Windows'un aksine, var = çevresine çift tırnak işareti koymak işe yaramaz, bunun yerine adı çift tırnakla başlayan bir ortam değişkeni oluşturur.)
Yanıtlar:
Evet, ayarını kaldırabilirsiniz
set FOO=
Veya açıkça kullanarak:
set "FOO="
İşaretten sonra hiçbir yabancı (görünmez) karakterin gelmediğinden emin olun =
. Yani:
set FOO=
farklıdır set FOO=
.Bu benim için Windows 7 CMD kabuğumda çalışıyor:
set FOO=bar
echo %FOO% // bar
set FOO=
echo %FOO% // empty; calling "set" no longer lists it
set
. Dener set FOO = bar
ve sonra denerseniz set FOO=
, "FOO" yu bozmaz. Bazı nedenlerden dolayı, içlerinde (ne kadar?) Önemli değiller % %
.
Aşağıdakileri sadece bir yorum olarak sunabilirim, ancak kendi başına duracak kadar önemli olduğunu düşünüyorum.
Önceki cevapların çoğu, takip eden boşluklara dikkat edilmesi gerektiğinden bahsetti; ve kesinlikle bu doğru. Bununla birlikte, bazen takip eden boşlukların ne olursa olsun oraya girmek istediğini gördüm - özellikle tek satırlık bir komut satırı yapıyorsanız ve bir komut ayırıcı olarak alana ihtiyacınız varsa.
Bu sorunun çözümü şudur:
SET FOO=Bar
echo %FOO%
:: outputs Bar
SET "FOO="
echo %FOO%
:: outputs %FOO%
Bildirimi bu şekilde çift tırnak içine alarak boşluk sorunu tamamen önlenebilir. Bu, değişkenler aradaki boşlukları ortadan kaldırmak için birleştirilerek oluşturulduğunda da gerçekten yararlı olabilir - örneğin - yollar, örneğin:
SET A=c:\users\ && SET D=Daniel
SET P="%a%%d%"
ECHO %P%
:: outputs "C:\Users\ Daniel"
:: Notice the undesirable space there
cmd.exe
) ??