Katakanlah saya menjalankan yang berikut ini di shell CMD:
SET "FOO=bar"
Apakah ada cara untuk membatalkan definisi variabel ini selain mendaur ulang shell CMD?
Katakanlah saya menjalankan yang berikut ini di shell CMD:
SET "FOO=bar"
Apakah ada cara untuk membatalkan definisi variabel ini selain mendaur ulang shell CMD?
set var=
jawaban Anda bekerja di bawah MS-DOS 6.22 command.com sama seperti di Windows cmd.exe. (Namun, tidak seperti Windows, menempatkan tanda kutip ganda di sekitar var = tidak berfungsi, melainkan membuat variabel lingkungan yang namanya dimulai dengan tanda kutip ganda.)
Jawaban:
Ya, Anda dapat membatalkannya dengan
set FOO=
Atau secara eksplisit menggunakan:
set "FOO="
Pastikan tidak ada karakter asing (tidak terlihat) yang tertinggal setelah =
tanda. Itu adalah:
set FOO=
berbeda dari set FOO=
.metode lain
@Echo oFF
setlocal
set FOO=bar
echo %FOO%
endlocal
echo %FOO%
pause
Catatan: Ini tidak akan berfungsi pada prompt perintah interaktif. Tetapi bekerja dalam skrip batch.
Ini berfungsi untuk saya di shell CMD Windows 7 saya:
set FOO=bar
echo %FOO% // bar
set FOO=
echo %FOO% // empty; calling "set" no longer lists it
set
perintah. Jika Anda mencoba set FOO = bar
dan kemudian mencoba set FOO=
, ini tidak akan menghapus 'FOO'. Untuk beberapa alasan, meskipun, mereka tidak (sebagai?) Signifikan di dalam % %
.
Saya akan menawarkan yang berikut ini hanya sebagai komentar, tetapi menurut saya cukup penting untuk berdiri sendiri.
Banyak dari jawaban sebelumnya menyebutkan bahwa seseorang perlu berhati-hati terhadap spasi yang tertinggal; dan pasti itu benar. Namun saya telah menemukan bahwa terkadang spasi tambahan hanya ingin masuk ke sana apa pun yang terjadi - terutama jika Anda melakukan baris perintah satu baris dan membutuhkan spasi sebagai pemisah perintah.
Inilah solusi untuk masalah itu:
SET FOO=Bar
echo %FOO%
:: outputs Bar
SET "FOO="
echo %FOO%
:: outputs %FOO%
Dengan membungkus deklarasi dalam tanda kutip ganda seperti itu, masalah spasi dapat dihindari sepenuhnya. Ini juga bisa sangat berguna ketika variabel dibuat dengan menggabungkan untuk menghilangkan spasi di antara - misalnya - jalur, misalnya:
SET A=c:\users\ && SET D=Daniel
SET P="%a%%d%"
ECHO %P%
:: outputs "C:\Users\ Daniel"
:: Notice the undesirable space there
cmd.exe
) ??