जवाबों:
var2 सेट है, लेकिन echo %var2%ब्लॉक में विस्तार ब्लॉक निष्पादित होने से पहले होता है।
इस समय var2खाली है।
इसलिए विलंबित विस्तारक सिंटैक्स मौजूद है, यह !इसके बजाय उपयोग करता है %और इसका मूल्यांकन निष्पादन समय पर किया जाता है, न कि पार्स समय।
कृपया ध्यान दें कि उपयोग करने के लिए !, अतिरिक्त विवरण setlocal EnableDelayedExpansionकी आवश्यकता है।
setlocal EnableDelayedExpansion
set var1=true
if "%var1%"=="true" (
set var2=myvalue
echo !var2!
)
&और &&ऑपरेटरों के लिए एक ही नियम । यह कोड set x=some & set y=%x%thing & echo results %y%आउटपुट है %x%thing।
मुझे पार्टी में थोड़ी देर हो गई है लेकिन इस स्थिति से निपटने का एक और तरीका है if, इस तरह से प्रक्रिया जारी रखना
set var1=true
if "%var1%"=="true" (
set var2=myvalue
)
echo %var2%
या / और gotoवाक्यविन्यास का उपयोग करें
set var1=true
if "%var1%"=="true" (
set var2=myvalue
goto line10
) else (
goto line20
)
. . . . .
:line10
echo %var2%
. . . . .
:line20
इस तरह से विस्तार "समय में" होता है और आपको इसकी आवश्यकता नहीं होती है setlocal EnableDelayedExpansion। नीचे पंक्ति, यदि आप अपनी स्क्रिप्ट के डिजाइन पर पुनर्विचार करते हैं तो आप इसे उसी तरह कर सकते हैं
echo off set var1=true if "%var1%"=="true" ( set var2=myvalue ) echo %var2% pause.. और यह काम कर रहा है। "अगर आप बैच फ़ाइल में एक वैरिएबल बनाएंगे जिसे प्रोग्राम में कहीं भी एक्सेस किया जा सकता है।" । aticleworld.com/batch-file-variables-and-scope