উত্তর:
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
like
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