CMD kabuğunda aşağıdakileri çalıştırdığımı söyleyelim:Bir MS-DOS değişkeni nasıl undefine edilir?
set FOO=bar
CMD kabuğunun geri dönüşümü dışında bu değişkeni tanımlamak için bir yol var mı?
CMD kabuğunda aşağıdakileri çalıştırdığımı söyleyelim:Bir MS-DOS değişkeni nasıl undefine edilir?
set FOO=bar
CMD kabuğunun geri dönüşümü dışında bu değişkeni tanımlamak için bir yol var mı?
Evet,
set FOO=
Önemli Not ile Ayarını iptal edebilirsiniz: hayır sonda boşlukların/diğer görünmez karakterler = sonrasında olduğundan emin olun. ! set FOO=
= set FOO=
Sadece boş bir boşluk olmadığından emin olun. :) –
Siz haktasınız. Bunu dahil etmek için düzenlenmiş cevap. Teşekkür @ –
Daha da iyisi: Açıklık için çift tırnak ekle: 'set" FOO = "' – kevinarpe
Bu benim Windows 7 CMD kabuğunda benim için çalışıyor:
set FOO=bar
echo %FOO% // bar
set FOO=
echo %FOO% // empty; calling "set" no longer lists it
"set" komutunda boşluklar önemlidir. Eğer 'FOO = bar' ayarını denerseniz ve 'FOO =' ayarlamayı denerseniz, 'FOO' değerini kaldırmaz. Bazı nedenlerle olsa da, bunlar %% 'içinde önemli değil. –
@ İyi nokta! Sabit, teşekkürler. –
Sondaki boşluk da önemlidir. Düzenlemediğim için üzgünüm, temsilcinin 270, 270k değil ... ... olduğunu söyledim. Çoğunlukla, kullanıcı geri gelmeyeceğini düşündürdüğünde cevapları sıklıkla düzenlerim.Açıkçası burada durum böyle değil. Benim hatam. – chappjc
değişkeni unset Güvenli bir şekilde daha sonra sonunda boşluk sorunların olmadığından, tırnak da kullanmaktır.
set FOO=bar
echo %FOO%
set "FOO=" text after the last quote is ignored
echo %FOO%
başka bir yöntem
@Echo oFF
setlocal
set FOO=bar
echo %FOO%
endlocal
echo %FOO%
pause
Not: Bu interaktif bir komut istemine üzerinde işe yaramaz. Ama toplu komut dosyasında çalışır.
Aşağıdakileri sadece bir yorum olarak öneririm, ama bence kendi başına ayakta duracak kadar önemli.
bir sonunda boşluk sakınmak için ihtiyacı olan bahsedilen önceki cevapların çok; ve bunun doğru olduğuna eminim. Bununla birlikte, bazen sondaki boşlukların sadece oraya girmek istediğini fark ettim - özellikle bir komut satırı tek liner yapıyorsanız ve bir alan ayırıcısı olarak mekana ihtiyacınız varsa.
Bu
bu soruna çözüm:SET FOO=Bar
echo %FOO%
:: outputs Bar
SET "FOO="
echo %FOO%
:: outputs %FOO%
çift tırnak bu şekilde beyanı sararak, aralık sorunu tamamen önlenebilir. Bu değişkenler arasındaki boşlukları ortadan kaldırmak için birleştirerek oluşturulduğunda gerçekten yararlı da 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
Eğer ** gerçekten ** en az 10 ölü olan MS-DOS (kastediyorsunuz yıl ya da öylesine - ya da diyorsunuz * MS-DOS * ama gerçekten Windows komut satırı ('cmd.exe') demek? –
Benzer şekilde, ama bu soru için gerçekten önemli değil ... –
Marc haklı. Bu MS-DOS kabuğu değil. İnsanlar asla bunun büyük bir fark olduğunu öğrenmezler. –