উত্তর:
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।
আমি পার্টিতে কিছুটা দেরি করেছি তবে এই শর্তটি মোকাবেলার আরেকটি উপায় হ'ল বাইরে প্রক্রিয়া চালিয়ে যাওয়া iflike
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