Batch Script-এ লুপিং (Looping) হল এমন একটি প্রক্রিয়া যা আপনাকে একাধিকবার একটি নির্দিষ্ট ব্লক কোড চালানোর সুবিধা দেয়। এটি বিশেষভাবে দরকারি যখন আপনার একাধিক আইটেমের উপর অপারেশন করতে হয় বা একই কাজ একাধিক বার করতে হয়। Batch Script-এ লুপিংয়ের জন্য প্রধানত FOR
লুপ ব্যবহৃত হয়। এখানে আমরা Batch Script-এ লুপিংয়ের বিভিন্ন কৌশল ও উদাহরণ আলোচনা করব।
FOR
লুপ Batch Script-এ সবচেয়ে সাধারণভাবে ব্যবহৃত হয়। এটি আপনাকে একটি নির্দিষ্ট পরিমাণ বা শর্তসাপেক্ষে কোড ব্লক একাধিক বার চালাতে দেয়।
নিচের উদাহরণটি একটি সাধারণ FOR
লুপ যা একটি সিকোয়েন্সের প্রতিটি আইটেমের উপর কাজ করবে।
FOR %%i IN (1 2 3 4 5) DO echo %%i
এখানে FOR
লুপ 1
থেকে 5
পর্যন্ত প্রতিটি সংখ্যা নিয়ে echo
কমান্ড চালাবে। আউটপুট হবে:
1
2
3
4
5
এখানে %%i
হচ্ছে লুপের প্রতিটি ইটারেশন এর জন্য একটি ভেরিয়েবল, এবং (1 2 3 4 5)
হচ্ছে লুপে ব্যবহার করা আইটেমগুলি।
FOR /L
লুপটি ব্যবহার করা হয় যখন আপনি নির্দিষ্ট একটি সংখ্যা থেকে অন্য একটি সংখ্যার মধ্যে লুপ চালাতে চান। এটি গননা অনুযায়ী চলবে।
উদাহরণ:
FOR /L %%i IN (1,1,5) DO echo %%i
এখানে FOR /L %%i IN (1,1,5)
এর মানে হল যে %%i
1 থেকে শুরু হবে, 1 প্রতি বাড়বে, এবং 5 পর্যন্ত যাবে। আউটপুট হবে:
1
2
3
4
5
এখানে প্রথম সংখ্যা (1) হলো স্টার্টিং পয়েন্ট, দ্বিতীয় সংখ্যা (1) হলো ইনক্রিমেন্ট ভ্যালু, এবং তৃতীয় সংখ্যা (5) হলো এন্ড পয়েন্ট।
FOR /F
লুপটি ফাইল বা স্ট্রিং থেকে ডেটা প্রক্রিয়া করার জন্য ব্যবহৃত হয়। এটি একটি ফাইলের প্রতিটি লাইন বা স্ট্রিংয়ের প্রতিটি শব্দের উপর কাজ করতে পারে।
ফাইল থেকে লাইন পড়ার উদাহরণ:
FOR /F "tokens=*" %%i IN (myfile.txt) DO echo %%i
এখানে FOR /F
লুপটি myfile.txt
ফাইলের প্রতিটি লাইনকে পড়বে এবং echo
কমান্ডের মাধ্যমে সেটি প্রদর্শন করবে।
স্ট্রিং থেকে শব্দ পড়ার উদাহরণ:
SET text=apple orange banana
FOR /F "tokens=1,2,3" %%i IN ("%text%") DO echo %%i
এখানে FOR /F
লুপটি স্ট্রিং apple orange banana
থেকে প্রতিটি শব্দ আলাদা করবে এবং একে একে %%i
এর মাধ্যমে প্রদর্শন করবে।
আউটপুট হবে:
apple
orange
banana
FOR
লুপ ব্যবহার করে আপনি ডিরেক্টরি বা ফাইলগুলির সাথে কাজ করতে পারেন। উদাহরণস্বরূপ, একটি নির্দিষ্ট ফোল্ডারে থাকা সমস্ত ফাইলের উপর লুপ চালানোর জন্য আপনি FOR
লুপ ব্যবহার করতে পারেন।
ফোল্ডার থেকে ফাইল লিস্ট করা:
FOR %%f IN (*.txt) DO echo %%f
এখানে এই কমান্ডটি বর্তমান ডিরেক্টরির সকল .txt
ফাইলের নাম প্রদর্শন করবে।
নেস্টেড লুপ হল এক লুপের ভিতরে আরেকটি লুপ ব্যবহার করা। যখন আপনাকে একাধিক পর্যায়ে ডেটা প্রক্রিয়া করতে হয় তখন নেস্টেড লুপ খুব কার্যকরী হতে পারে।
নেস্টেড FOR লুপ উদাহরণ:
FOR %%i IN (1 2 3) DO (
FOR %%j IN (A B C) DO (
echo %%i %%j
)
)
এখানে বাইরের FOR %%i
লুপটি 1, 2, এবং 3 পর্যন্ত যাবে, এবং প্রতিটি %%i
এর জন্য ভিতরের FOR %%j
লুপটি A
, B
, এবং C
পর্যন্ত যাবে। আউটপুট হবে:
1 A
1 B
1 C
2 A
2 B
2 C
3 A
3 B
3 C
Batch Script-এ আপনি লুপের ভিতরে শর্তসাপেক্ষে (conditional) কোনো কিছু করতে পারেন। এটি IF
স্টেটমেন্টের মাধ্যমে করা যেতে পারে।
উদাহরণ:
FOR %%i IN (1 2 3 4 5) DO (
IF %%i LSS 3 (
echo %%i is less than 3
) ELSE (
echo %%i is greater than or equal to 3
)
)
এখানে LSS
হল একটি কম্প্যারেটর যা "less than" অর্থাৎ "ছোট" পরীক্ষা করে। আউটপুট হবে:
1 is less than 3
2 is less than 3
3 is greater than or equal to 3
4 is greater than or equal to 3
5 is greater than or equal to 3
GOTO
ব্যবহারকিছু ক্ষেত্রে, আপনি লুপের মধ্যে নির্দিষ্ট অবস্থায় চলে যাওয়ার জন্য GOTO
কমান্ড ব্যবহার করতে পারেন।
উদাহরণ:
FOR %%i IN (1 2 3 4 5) DO (
IF %%i==3 GOTO EndLoop
echo %%i
)
:EndLoop
echo Loop Ended
এখানে %%i
যখন 3 হয়, তখন লুপটি GOTO EndLoop
দ্বারা শেষ হয়ে যাবে এবং "Loop Ended" প্রদর্শিত হবে।
Batch Script-এ লুপিং কৌশলগুলি অটোমেশন এবং স্ক্রিপ্টিং কাজকে আরো সহজ এবং শক্তিশালী করে তোলে। FOR
, FOR /L
, এবং FOR /F
লুপগুলি বিভিন্ন ধরণের কাজের জন্য উপযুক্ত, যেমন সংখ্যা গণনা, ফাইল প্রসেসিং এবং স্ট্রিং বিশ্লেষণ। নেস্টেড লুপ এবং শর্তসাপেক্ষ লুপগুলো আরো জটিল প্রক্রিয়া সম্পাদন করতে সহায়ক, এবং GOTO
কমান্ডের মাধ্যমে লুপের প্রবাহ নিয়ন্ত্রণ করা সম্ভব।
Batch Script এ FOR Loop একটি খুবই গুরুত্বপূর্ণ কনস্ট্রাক্ট, যা ব্যবহার করে আপনি একটি নির্দিষ্ট কাজ বা কার্যক্রম একাধিক বার পুনরাবৃত্তি করতে পারেন। এটি একটি টাইপের লুপ যেটি নির্দিষ্ট সংখ্যক বা শর্তসাপেক্ষ বারের জন্য কোড চালায়। Batch Script এ FOR Loop ব্যবহার করে ফাইলস, ডিরেক্টরিজ, কিংবা ভেরিয়েবলগুলির মান অনুযায়ী কাজ করা যায়।
Batch Script এ FOR Loop এর মৌলিক গঠন কিছুটা এইরকম:
FOR %%variable IN (set) DO command
%%variable
: এটি লুপের চলমান মান যা প্রতি ইটারেশনে পরিবর্তিত হবে।(set)
: এটি এমন একটি সেট (যেমন ফাইল নাম বা সংখ্যা) যা লুপের মধ্যে প্রতিবার প্রক্রিয়াকৃত হবে।DO command
: এটি সেই কমান্ড যা প্রতি লুপ ইটারেশনে এক্সিকিউট হবে।FOR %%i IN (1 2 3 4 5) DO echo %%i
এই স্ক্রিপ্টটি ১ থেকে ৫ পর্যন্ত সংখ্যাগুলি একে একে আউটপুট করবে।
আপনি FOR
লুপের মধ্যে একটি রেঞ্জ ডিফাইন করতে পারেন। উদাহরণস্বরূপ:
FOR /L %%i IN (1,1,5) DO echo %%i
এখানে, /L
অপশনটি ব্যবহার করা হয়েছে, যার মানে হচ্ছে লুপটি একটি নির্দিষ্ট রেঞ্জের মধ্যে চলবে। এখানে লুপটি ১ থেকে ৫ পর্যন্ত ইটারেট করবে, যেখানে 1
হল প্রথম মান, 1
হল স্টেপ বা ইনক্রিমেন্ট এবং 5
হল শেষ মান।
Batch Script এ আপনি FOR
লুপ ব্যবহার করে ডিরেক্টরিতে থাকা সব ফাইলের উপর কাজ করতে পারেন। উদাহরণস্বরূপ, একটি ডিরেক্টরির সব ফাইলের নাম প্রদর্শন করতে:
FOR %%f IN (*.*) DO echo %%f
এখানে *.*
এর মাধ্যমে বর্তমান ডিরেক্টরির সব ফাইলের উপর কাজ করা হবে এবং %%f
দ্বারা তাদের নাম আউটপুট হবে।
FOR %%f IN (C:\Source\*) DO copy %%f C:\Destination\
এই স্ক্রিপ্টটি C:\Source\
ফোল্ডারের সমস্ত ফাইল কপি করে C:\Destination\
ফোল্ডারে।
আপনি FOR
লুপ ব্যবহার করে কোনো টেক্সট ফাইলের প্রতিটি লাইন পড়তে পারেন। উদাহরণস্বরূপ:
FOR /F "tokens=*" %%a IN (example.txt) DO echo %%a
এখানে /F
অপশনটি ফাইলের প্রতিটি লাইনকে %%a
ভেরিয়েবলের মাধ্যমে প্রক্রিয়া করে আউটপুট করবে।
Batch Script এ FOR
লুপের আরও কিছু অপশন রয়েছে যেগুলি বিভিন্ন পরিস্থিতিতে ব্যবহৃত হয়:
FOR /R %%f IN (*.txt) DO echo %%f
এখানে /R
অপশনটি ব্যবহার করে সাবডিরেক্টরি গুলির ভিতরেও .txt
এক্সটেনশনের ফাইলগুলির উপর কাজ করা হয়েছে।
Batch Script এ FOR Loop একটি অত্যন্ত শক্তিশালী টুল, যা আপনি ব্যবহার করে ফাইল, ডিরেক্টরি, সংখ্যার রেঞ্জ বা এমনকি ফাইলের লাইন দ্বারা কাজ করতে পারেন। এর মাধ্যমে আপনি কোডের পুনরাবৃত্তি ঘটাতে পারেন এবং বিভিন্ন ধরনের ডাটা প্রক্রিয়া করতে পারেন। ফর লুপের বিভিন্ন অপশন, যেমন /L
, /F
, /D
, /R
ইত্যাদি, Batch Script কে আরও শক্তিশালী এবং ফ্লেক্সিবল করে তোলে।
FOR লুপ একটি ব্যাচ স্ক্রিপ্টের একটি গুরুত্বপূর্ণ উপাদান যা বিভিন্ন কাজ পুনরাবৃত্তি করতে ব্যবহার করা হয়। Windows Batch Script এ দুটি বিশেষ ধরনের FOR লুপ রয়েছে: FOR /L এবং FOR /F। এই দুটি লুপের মাধ্যমে আপনি তালিকা তৈরি, ফাইল প্রক্রিয়াকরণ এবং কাস্টম অ্যাকশন পুনরাবৃত্তি করতে পারেন।
FOR /L লুপটি মূলত একটি সংখ্যা সীমা দিয়ে নির্দিষ্ট সংখ্যক পুনরাবৃত্তি করে। এটি গাণিতিক ক্রম তৈরি করতে ব্যবহৃত হয়। এই লুপটি সাধারণত একটি স্টার্টিং ভ্যালু, একটি ইনক্রিমেন্ট এবং একটি এন্ডিং ভ্যালু নেয়।
সিনট্যাক্স:
FOR /L %%variable IN (start,step,end) DO command
যদি আপনি 1 থেকে 10 পর্যন্ত সংখ্যাগুলি প্রিন্ট করতে চান:
@echo off
FOR /L %%i IN (1,1,10) DO echo %%i
এটি 1 থেকে 10 পর্যন্ত একে একে প্রতিটি সংখ্যা আউটপুট করবে।
ব্যাখ্যা:
FOR /F লুপটি সাধারণত ফাইল, স্ট্রিং বা আউটপুট থেকে তথ্য বের করে নিয়ে কাজ করার জন্য ব্যবহৃত হয়। এই লুপটি ইনপুট থেকে এক বা একাধিক লাইনের মাধ্যমে কাজ করতে পারে। এটি এমনকি কমান্ড আউটপুট থেকেও ডেটা নিতে পারে।
সিনট্যাক্স:
FOR /F "options" %%variable IN (file) DO command
এখানে, options
দিয়ে আপনি ইনপুটের পার্সিং নির্দেশনা দিতে পারেন (যেমন ডেলিমিটার সেট করা), এবং file
একটি ফাইল বা কমান্ড আউটপুট হতে পারে।
@echo off
FOR /F "tokens=*" %%i IN (data.txt) DO echo %%i
এটি data.txt
ফাইলের প্রতিটি লাইন পড়বে এবং তা স্ক্রিনে প্রদর্শন করবে।
@echo off
FOR /F "tokens=2 delims= " %%i IN ('ipconfig') DO echo %%i
এটি ipconfig
কমান্ডের আউটপুট থেকে দ্বিতীয় টোকেন (যেমন IP ঠিকানা) নিয়ে এসে স্ক্রিনে প্রদর্শন করবে।
ব্যাখ্যা:
"tokens=2 delims= "
নির্দেশনা দেয় যে, প্রথম টোকেনের পরে স্পেস (space) ডেলিমিটার হিসেবে কাজ করবে, এবং দ্বিতীয় টোকেনটি নির্বাচন করা হবে।ipconfig
কমান্ডের আউটপুট থেকে প্রথম স্পেসের পরে যে তথ্য আসবে তা আউটপুট হবে।@echo off
FOR /F "tokens=1,2 delims=," %%a,%%b IN (file.csv) DO echo %%a %%b
এটি file.csv
ফাইলের প্রতিটি লাইনে কমা দ্বারা বিভক্ত দুটি টোকেন গ্রহণ করে এবং সেগুলিকে আউটপুট করবে।
এই লুপগুলো Batch Script এর অত্যন্ত শক্তিশালী টুল, যা পুনরাবৃত্তিমূলক কাজগুলিকে সহজ এবং দ্রুত সম্পন্ন করতে সহায়তা করে।
Batch Script-এ loop ব্যবহার করে আপনি ফাইল এবং ডিরেক্টরি গুলোর উপর একাধিক অপারেশন চালাতে পারেন। যখন আপনি একটি ডিরেক্টরির সমস্ত ফাইলের সাথে কাজ করতে চান, অথবা বিভিন্ন ফাইলের উপর কোনো নির্দিষ্ট কাজ করতে চান, তখন for
লুপটি খুবই কার্যকরী। এটি আপনাকে স্বয়ংক্রিয়ভাবে একাধিক ফাইল বা ডিরেক্টরি প্রসেস করতে সাহায্য করে।
for লুপের মাধ্যমে আপনি একটি নির্দিষ্ট ডিরেক্টরির সমস্ত ফাইল বা সাব-ডিরেক্টরি সম্পর্কে তথ্য পেতে পারেন এবং তাদের উপর অপারেশন করতে পারেন। এখানে কয়েকটি সাধারণ উদাহরণ দেওয়া হলো:
for
লুপ ব্যবহার করে একটি ডিরেক্টরির মধ্যে থাকা সব ফাইলের উপর কাজ করতে পারেন।
@echo off
for %%F in (C:\path\to\folder\*) do (
echo %%F
)
pause
এখানে %%F
হলো প্রতিটি ফাইলের রেফারেন্স যা লুপের মধ্যে প্রতিটি ফাইলের জন্য এক এক করে ইটারেট হবে। আপনি এখানে যেকোনো ডিরেক্টরির পাথ (যেমন C:\path\to\folder\
) নির্দিষ্ট করতে পারেন।
এটি সব .txt
ফাইলের নাম দেখানোর উদাহরণ:
@echo off
for %%F in (C:\path\to\folder\*.txt) do (
echo %%F
)
pause
এখানে *.txt
দিয়ে শুধু .txt
এক্সটেনশনের ফাইলগুলোকে চিহ্নিত করা হয়েছে।
যেমন, আপনি প্রতিটি .txt
ফাইলের সাথে কিছু কাজ করতে চান। নিচে একটি উদাহরণ দেওয়া হলো যেখানে প্রতিটি .txt
ফাইলের একটি কপি তৈরি করা হচ্ছে:
@echo off
for %%F in (C:\path\to\folder\*.txt) do (
copy "%%F" "C:\path\to\destination\"
)
pause
এখানে %%F
প্রতিটি .txt
ফাইলের পাথকে রেফারেন্স করছে এবং copy
কমান্ডের মাধ্যমে সেগুলি নতুন ডিরেক্টরিতে কপি হচ্ছে।
for লুপের মাধ্যমে আপনি শুধু ফাইলই না, বরং ডিরেক্টরি নিয়েও কাজ করতে পারেন।
@echo off
for /d %%D in (C:\path\to\folder\*) do (
echo %%D
)
pause
এখানে /d
স্যুইচটি ব্যবহার করে শুধুমাত্র ডিরেক্টরির নাম গুলি তালিকাভুক্ত হচ্ছে।
যদি আপনি কোনো ডিরেক্টরি এবং তার সব সাব-ডিরেক্টরির ফাইলের উপর কাজ করতে চান, তবে /r
স্যুইচটি ব্যবহার করতে পারেন:
@echo off
for /r C:\path\to\folder %%F in (*.txt) do (
echo %%F
)
pause
এখানে /r
স্যুইচটি ব্যবহার করা হয়েছে যাতে এটা রিকার্সিভভাবে সব সাব-ডিরেক্টরিতে গিয়ে .txt
ফাইলগুলো খুঁজে বের করে এবং তাদের নাম প্রদর্শন করে।
আপনি যদি ফাইলের নাম থেকে কিছু অংশ বের করতে চান, তাহলে ~ ব্যবহার করতে পারেন।
@echo off
for %%F in (C:\path\to\folder\*.txt) do (
echo %%~nF
)
pause
এখানে %%~nF
শুধুমাত্র ফাইলের নাম দেখাবে, এক্সটেনশন বাদ দিয়ে।
@echo off
for %%F in (C:\path\to\folder\*.txt) do (
echo Full path: %%F
echo File name: %%~nxF
echo Directory: %%~dpF
)
pause
এখানে:
%%~nF
ফাইলের নাম দেখাবে%%~xF
ফাইলের এক্সটেনশন দেখাবে%%~dpF
ফাইলের ডিরেক্টরি পাথ দেখাবেfor loop Batch Script-এ ফাইল এবং ডিরেক্টরির সাথে কাজ করার একটি অত্যন্ত কার্যকরী টুল। আপনি এটি ব্যবহার করে ডিরেক্টরি ও ফাইলগুলির উপর একাধিক অপারেশন চালাতে পারেন, যেমন ফাইল কপি করা, নাম পরিবর্তন করা, বা কোনো নির্দিষ্ট কাজ করা। এছাড়াও, আপনি রিকার্সিভভাবে সাব-ডিরেক্টরিগুলোর উপরও কাজ করতে পারেন। for লুপের মাধ্যমে ফাইলের নাম, এক্সটেনশন, পাথ, এবং অন্যান্য বৈশিষ্ট্য নিয়ে কাজ করা খুবই সহজ এবং এটি Batch Script-এর অন্যতম গুরুত্বপূর্ণ ফিচার।
Batch Script-এ Nested Loops ব্যবহার করা হয় যখন আপনি একটি লুপের মধ্যে আরেকটি লুপ চালাতে চান। এটি বেশ কার্যকরী হতে পারে যখন আপনি একাধিক স্তরের লুপ তৈরি করতে চান, যেমন একটি লুপের মধ্যে আরও একাধিক লুপ। এই পদ্ধতিতে, আপনি বাইরের লুপে একটি আউটপুট প্রক্রিয়া করতে পারেন এবং ভিতরের লুপের মাধ্যমে প্রতিটি আউটপুটের জন্য আরও বিস্তারিত কাজ করতে পারেন।
Nested Loops বলতে বুঝানো হয় এমন একটি লুপ যেখানে এক লুপের মধ্যে অন্য লুপ থাকে। Batch Script-এ, আপনি সাধারণত FOR লুপ ব্যবহার করে এটি করতে পারেন। ভিতরের লুপটি বাইরের লুপের প্রতিটি পুনরাবৃত্তির জন্য একবার করে চালানো হয়।
FOR %%i IN (range) DO (
FOR %%j IN (range) DO (
REM your commands here
)
)
এখানে:
ধরা যাক, আপনি একটি ২-ডাইমেনশনাল গ্রিড তৈরি করতে চান, যেখানে বাইরের লুপটি এক সারির জন্য কাজ করবে এবং ভিতরের লুপটি প্রতি সারিতে কলামগুলোর জন্য কাজ করবে।
@echo off
FOR %%i IN (1 2 3) DO (
FOR %%j IN (A B C) DO (
echo %%i %%j
)
)
pause
এখানে:
আউটপুট:
1 A
1 B
1 C
2 A
2 B
2 C
3 A
3 B
3 C
ধরা যাক, আপনি একটি টেবিলের মতো ১ থেকে ৩ পর্যন্ত সংখ্যার জন্য একটি গ্রিড তৈরি করতে চান, যেখানে বাইরের লুপটি রো এবং ভিতরের লুপটি কলাম তৈরি করবে।
@echo off
FOR %%i IN (1 2 3) DO (
FOR %%j IN (1 2 3) DO (
echo %%i %%j
)
)
pause
এখানে, বাইরের লুপটি প্রথমে 1 নেবে, তারপর 2 এবং শেষে 3 নেবে, এবং প্রতিটি বাইরের লুপের জন্য ভিতরের লুপটি ১, ২, ৩ মান নিয়ে চলবে।
Batch Script-এ সঠিক 2D Array নেই, তবে Nested Loops ব্যবহার করে আপনি 2D Array সিমুলেট করতে পারেন। উদাহরণস্বরূপ:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set count=1
FOR %%i IN (1 2 3) DO (
FOR %%j IN (1 2 3) DO (
set result[!count!]=Row %%i, Column %%j
set /a count+=1
)
)
:: Displaying the values
FOR /L %%k IN (1,1,9) DO (
echo !result[%%k]!
)
pause
এখানে:
আউটপুট:
Row 1, Column 1
Row 1, Column 2
Row 1, Column 3
Row 2, Column 1
Row 2, Column 2
Row 2, Column 3
Row 3, Column 1
Row 3, Column 2
Row 3, Column 3
Nested Loops বেশ কার্যকরী হতে পারে কিছু ব্যবহারিক ক্ষেত্রে, যেমন:
Nested Loops ব্যবহার Batch Script-এ আপনাকে একাধিক স্তরের লুপ তৈরি করতে সহায়তা করে। এটি খুবই উপকারী যখন আপনাকে একই সময়ের মধ্যে একাধিক আউটপুট বা ডেটার উপর কাজ করতে হয়। এর মাধ্যমে আপনি একাধিক মান নিয়ে কাজ করতে পারবেন এবং সহজেই বড় কাজগুলোকে ছোট ছোট টুকরো করে ভাগ করতে পারবেন।
common.read_more