जवाबों:
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