Sunday, January 16, 2022

BAT File သင်ခန်းစာ (၄)

ကျနော်တို့ရဲ့ TuT လေးကို ဆက်လက်ဆွေးနွေးလိုက်ကြရအောင်…

ကျနော် ဒီနေ့ ဆွေးနွေးကြည့်မှာကတော့ if နဲ့ parameter တွေကို နှိုင်းယှဉ်ပြီးတော့ program ကို အလုပ်လုပ်စေတဲ့ နည်းဖြစ်ပါတယ်။ IF နဲ့ parameter ကို ဘယ်လို တိုက်ဆိုင်စစ်ဆေးမလဲဆိုတာကိုတော့ အောက်က if ရဲ့ ရေးပုံရေးနည်း (syntax) ကို ကြည့်ကြည့်ပေးပါ။

IF [NOT] string1==string2 Command

အပေါ်မှာပေးထားတဲ့ Code ကို အောက်ကဥပမာလေးနဲ့လေ့လာကြည့်ရအောင်။

@echo off

if %1==cp goto COPY

goto DEL

:COPY

Copy %2 C:\Users\Administrator\Desktop\

echo You have copied %2 to your desktop

goto :END

Description: :DEL

Del %2

echo Delete Process Completed.

:END

ဒီ ဥပမာလေးကတော့ ကျနော် ဟိုးအရင်ကစာအုပ်တစ်အုပ်ကနေတွေ့ထားတာလေးပါ။ ပိုမိုနားလည်စေဖို့အတွက် ကျနော် ပြန်ဖြည့်ရေးထားပါတယ်။

သူရေးသွားတဲ့ ပုံစံလေးကတော်တော် ကောင်းပါတယ်။ (အဲဒီ့စာအုပ်ထဲမှာကရေးသာရေးထားတယ် Code ကတိုကလည်းတိုသေးတယ် ရှင်းကမရှင်းပြထားဘူးဆို တော့ ဘယ်လို ပြန်ရှင်းရင် အစ်ကိုတို့ အစ်မတို့ နားလည်မလဲဆိုတာကို စဉ်းစားလိုက်ရတာ ကျနော့်မှာ တော်တော် တိုင်ပတ်သွားသေးတယ်။ ခုတော့ အိုကေသွား ပါပြီ။ သူ့မူရင်း Code လိုလည်း တိုနှံ့နှံ့ဟုတ်တော့ဘူး။ နည်းနည်းရှည်သွားဘီ။ နားလည်ဖို့လည်း လွယ်သွားပါပြီ။

ဒီဥပမာမှာဆိုရင် ကျနော်တို့ဟာ parameter ၂ ခုကို သုံးသွားပါတယ်။ ပထမ parameter ကို သုံးထားတဲ့နေရာကတော့ IF statement နဲ့ cp ဆိုတဲ့ parameter တစ်ခုကို %1 ဆိုတဲ့ user ဆီက ဝင်လာမယ့် ကောင်နဲ့ တိုက်စစ်ပါတယ်။ အကယ်လို့ တူတယ်ဆိုရင်တော့ COPY ဆိုတဲ့ Function ဆီကို သွားပြီးတော့ copy အလုပ်ကို လုပ်မှာဖြစ်ပါတယ်။ ဒါမှမဟုတ်ဘဲနဲ့ မတူခဲ့ရင်တော့ DEL ဆိုတဲ့ Function ဆီကို ရောက်မှာ ဖြစ်ပါတယ်။


ဒုတိယ parameter ကတော့ %2 ပါ။ %2 ကိုတော့ file name ကို လက်ခံရန်အတွက် အသုံးပြုထားပါတယ်။ ကျနော်တို့ဟာ 1st parameter မှာ cp မရိုက်ထည့် ဘဲ တခြားဟာသာ ဝင်လာခဲ့ရင်တော့ DEL Function ဆီကို ရောက်လာမှာဖြစ်ပြီးတော့ %2 ဖြစ်တဲ့ ကျနော်တို့ သတ်မှတ်ပေးမယ့် file က ပျက်သွားမှာဖြစ်ပါတယ်။

အပေါ်က ဥပမာလေးကို run ရင် ဘယ်လို run ရတယ်ဆိုတာ ပြောပြပေးပါ့မယ်။ ကျနော် FOR Looping အကြောင်းရှင်းပြခဲ့တုန်းက တစ်ခါ ဒီလို ပုံစံမျိုးရေးပေးဖူး ပါတယ်။ မေ့သွားတဲ့ သူတွေ အတွက် ပြန်ရှင်းပြပေးတာပါ။


Program Run ပုံ အဆင့်ဆင့်

Desktop ပေါ်မှာ Test ဆိုတဲ့ နာမည်နဲ့ Folder အသစ်တစ်ခု အရင်ဆောက်ပါ။

ပြီးရင် အပေါ်က Code လေးကို Notepad ထဲမှာရေးပြီးရင်တော့ အဲဒီ့ Folder ထဲမှာ if.bat နဲ့ သိမ်းလိုက်ပါ။

သူ့ရဲ့ လမ်းကြောင်းကတော့ (C:\Users\Administrator\Desktop\Test) ဆိုပြီးဖြစ်နေရပါမယ်။

အဲဒီ့ Test ဆိုတဲ့ Folder ထဲကိုဘဲ text file တစ်ခုခု ဒါမှမဟုတ်ကြိုက်တာ တစ်ခုခုထည့်ထားပါ။ နာမည်ကိုလည်း ကြိုက်တာပေးလို့ရပေမယ့် ကျနော် ပြောလို့ လွယ်သွားအောင် fortesting.txt နဲ့ သိမ်းထားပါ။

ပြီးရင် Start>>RUN>>cmd ကိုရိုက်ထည့်ပါ။

Command Prompt ပွင့်လာပြီဆိုရင်တော့ ခုနက if.bat ဖိုင်လမး်ကြောင်း(C:\Users\Administrator\Desktop\Test) ဆီကို cd Command သုံးပြီးပြောင်းပေးပါ။

cmd ထဲရောက်နေပြီး လမ်းကြောင်းလည်းပြောင်းပြီးသားဆိုပါက

မိမိ path လမ်းကြောင်း>if.bat cp fortesting.txt

Enter ခေါက်လိုက်ပါက You have copied fortesting.txt to your desktop ဆိုတဲ့ စာလေးပေါ်လာပြီးတော့ Desktop ပေါ်မှာ ကျနော်တို့ရဲ့ Test ဆိုတဲ့ folder ထဲက ဖိုင်လေးကို copy ကူးပြီးသားတွေ့ရပါလိမ့်မယ်။

အကယ်လို့များ cp ဆိုတဲ့နေရာမှာ တခြားတစ်ခုခု ရိုက်ထည့်လိုက်မယ်ဆိုရင်တော့ Delete Process Completed. ဆိုတဲ့ စာလေးပေါ်လာပြီးတော့ fortesting.txt ကို Test ဆိုတဲ့ folder ထဲမှာ ပျက်သွားတာတွေ့ရပါမယ်။

အထက်ပါ ဥပမာ ကို ကျနော်တို့ နောက််တစ်ဆင့်အနေနဲ့ ပိုမိုကောင်းမွန်အောင် ပြုပြင်ချင်ရင် ပြုပြင်လို့ရပါသေးတယ်။ ဥပမာ ကျနော်တို့ဟာ Program ထဲမှာ ဘာမှ မရိုက်ထည့်ဘဲနဲ့ parameter ကို အလွတ်ကြီးထည့်ပေးလိုက်ရင် error ပြအောင်ရေးလိုက်ဖို့ပါ။ ဘာမှ မခက်ခဲပါဘူး။ အောက်က Code လေးတစ်ခုလောက် ထည့်ပေးလိုက်ရုံပါဘဲ။

@echo off

IF “%1″==”" ECHO Parameter Error

အဲလိုဆိုရင်တော့ Parameter မပါတာနဲ့ Error Message ကို ပြပေးမှာပါ။ အဲလိုမျိုးပုံစံတူအနေနဲ့ ကျနော်တို့ဟာ ဒုတိယ parameter ဖြစ်တဲ့ File Name မှာ အလွတ်ဖြစ်နေမနေကို လည်း စစ်ဆေးပေးလို့ရတယ်ဆိုတာ စာဖတ်သူ အနေနဲ့ ကိုယ့်ဟာကို စဉ်းစားမိမယ်လို့ထင်ပါတယ်။

ပထမရေးပေးခဲ့တုန်းက file ၇ိှမရှိစစ်ဆေးသလိုဘဲ ဒီတစ်ခေါက် parameter စစ်တာမှာလည်း NOT ကို သုံးတာရှိပါတယ်။ သုံးပုံသုံးနည်း အတူတူ ဖြစ်လို့ မရေးပြတော့ဘူးနော်….

ဒီလောက်ဆိုရင် Batch File Programming နဲ့ ဘာတွေ သုံးလို့ရတယ်ဆိုတာ သဘောပေါက်လာလောက်ပြီလို့ထင်ပါတယ်။ ဉာဏ်ရှိရင် ရှိသလို ချဲ့ထွင် အသုံးပြုနိုင်လာပါလိမ့်မယ်။ bat ကို တအားကျွမ်းသွားရင် Windows တစ်ခုလုံးကို တောင် ပြောင်းပြန်လှန်လိုက်လို့ရသေးတယ်။ ကျနော်ရှင်းပြတဲ့အထဲမှာတောင် အနည်းအကျင်းပါနေပြီ။
ဒီနေ့တော့ အချိန်မရတော့လို့ ဒီလောက်ပါဘဲ။ see you later.....

No comments:

Post a Comment