আমার কাছে খুব সাধারণ ব্যাচের ফাইলগুলির দুটি উদাহরণ রয়েছে:
একটি ভেরিয়েবলের জন্য একটি মান নির্ধারণ করা:
@echo off
set FOO=1
echo FOO: %FOO%
pause
echo on
যা প্রত্যাশিত হিসাবে ফলাফল:
FOO: 1
Press any key to continue . . .
যাইহোক, যদি আমি একই দুটি লাইনটি যদি কোনও সংজ্ঞায়িত ব্লকের মধ্যে রাখি:
@echo off
IF NOT DEFINED BAR (
set FOO=1
echo FOO: %FOO%
)
pause
echo on
এটি অপ্রত্যাশিতভাবে ফলাফল:
FOO:
Press any key to continue . . .
এই করা উচিত নয় যদি স্পষ্ট ব্লক মৃত্যুদন্ড কার্যকর করা হচ্ছে সাথে কিছু আছে। আমি যদি উপরের বারটিকে সংজ্ঞায়িত করি তবে কেবল PAUSE কমান্ডের পাঠ্য প্রত্যাশিতভাবে প্রদর্শিত হবে।
কি দেয়?
প্রশ্ন অনুসরণ করুন: সেটলোকাল ছাড়া বিলম্বিত প্রসারণ সক্ষম করার কোনও উপায় আছে কি?
যদি আমি এই সাধারণ উদাহরণটিকে ব্যাচের ফাইলটিকে অন্য একজনের কাছ থেকে কল করতে পারি তবে উদাহরণটি FOO সেট করে তবে কেবল স্থানীয়।
উদাহরণ স্বরূপ:
testcaller.bat
@call test.bat
@echo FOO: %FOO%
@pause
test.bat
@setlocal EnableDelayedExpansion
@IF NOT DEFINED BAR (
@set FOO=1
@echo FOO: !FOO!
)
এটি প্রদর্শন করে:
FOO: 1
FOO:
Press any key to continue . . .
এই ক্ষেত্রে, এটি প্রদর্শিত হচ্ছে যে আমি কলার মধ্যে বিলম্বিত প্রসারণ সক্ষম করতে হবে, যা ঝামেলা হতে পারে।
!
ব্যবহার করুন^^^!
(এটি দুটিবার পালিয়ে যান)। অন্যথায় "বিলম্বিত সম্প্রসারণ" বৈশিষ্ট্যটি এটি খাবে।