Logikanya, jawaban Cody seharusnya berhasil. Namun saya tidak berpikir command prompt menangani blok kode secara logis. Untuk kehidupan saya, saya tidak bisa membuatnya berfungsi dengan baik dengan lebih dari satu perintah di dalam blok. Dalam kasus saya, pengujian ekstensif mengungkapkan bahwa semua perintah di dalam blok sedang di-cache, dan dijalankan secara bersamaan di akhir blok. Ini tentu saja tidak memberikan hasil yang diharapkan. Berikut adalah contoh yang terlalu disederhanakan:
if %ERRORLEVEL%==0 (
set var1=blue
set var2=cheese
set var3=%var1%_%var2%
)
Ini harus memberikan var3 dengan nilai berikut:
blue_cheese
tetapi malah menghasilkan:
_
karena semua 3 perintah di-cache dan dijalankan secara bersamaan setelah keluar dari blok kode.
Saya dapat mengatasi masalah ini dengan menulis ulang blok if untuk hanya menjalankan satu perintah - goto - dan menambahkan beberapa label. Ini kikuk, dan saya tidak begitu menyukainya, tapi setidaknya berhasil.
if %ERRORLEVEL%==0 goto :error0
goto :endif
:error0
set var1=blue
set var2=cheese
set var3=%var1%_%var2%
:endif