ဒီေန႔ေတာ့ If ကဲ့သုိ႔ပင္ Condition စစ္ေသာ Choice Command အေၾကာင္းရွင္းၿပေပးပါ့မယ္။ ဒီတစ္ေခါက္ Choice Command အေၾကာင္းကေတာ့ ဘာသာၿပန္ထားၿပီးေတာ့ က်ေနာ့္ေရးပံုေရးနည္းဘက္ကို နည္းနည္း
ၿပန္ေၿပာင္းထားပါတယ္။ မူရင္းေရးသားသူကေတာ့ ဘယ္သူမွန္းမသိေပမယ့္ CHOICE နဲ႔
ပတ္သက္ၿပီးေတာ့ သူေရးထားတဲ့ မူရင္းကေတာ့ ေတာ္ေတာ္ေကာင္းတယ္ဗ်… အကယ္လို႔
မ်ား Choice နဲ႔ ပတ္သက္ၿပီး နားမလည္ခဲ့ရင္ေတာ့ က်ေနာ့္ ရဲ႕
ဘာသာၿပန္ညံ့ဖ်င္းမႈနဲ႔ အတူ မူရင္းေရးသားပံုေရးသားနည္းကေန
က်ေနာ့္ေရးပံုေရးနည္းကို ေၿပာင္းလိုက္တဲ့အခါမွာၿဖစ္လာတဲ့
လိုအပ္ခ်က္ေၾကာင့္ မေကာင္းၿခင္းလို႔သာ မွတ္ယူေပးပါ။
CHOICE command ကို မေၿပာခင္ က်ေနာ္တုိ႔ Error Level အေၾကာင္းကို အရင္ေဆြးေႏြးၾကည့္ပါမယ္။
Error Level ဆုိတာကေတာ့ Program က သူၿပီးဆုံးသြားတဲ့ အခ်ိန္မွာ သတ္မွတ္လိုက္တဲ့ အခ်က္တစ္ခ်က္ပါ။
ဥပမာ… က်ေနာ္တုိ႔ ဟာ bat file တစ္ခုကို run ေနစဥ္မွာ Program
မၿပီးဆုံးေသးဘဲနဲ႔ CTRL+C ကို ႏွိပ္လုိက္လို႔ ရပ္သြားရတဲ့ ၿဖစ္ရပ္မ်ိဳးမွာ
ဆုိရင္ Error Level ကို 3 လို႔ သတ္မွတ္ပါတယ္။ အဲလိုမဟုတ္ဘဲနဲ႔ Program ဟာ
သူ႔ လုပ္ငန္းအားလုံးၿပီးဆုံးသြားလို႔ ပံုမွန္ ၿပီးဆုံးၿခင္းမ်ိဳးနဲ႔
ဘာအေႏွာက္အယွက္မွ မရိွဘဲၿပီးခဲ့ရင္ေတာ့ Error Level ကို 0 ဟု
သတ္မွတ္ပါတယ္။ Error Level ေတြဟာ သူ႔ဟာနဲ႔သူ သီးၿခားရပ္တည္ေနတဲ့
အခါမ်ိဳးမွာေတာ့ ဘာမွ ၿပႆနာမရိွနုိင္ေပမယ့္ (သို႔) အသံုးမ၀င္နုိင္ေပမယ့္
သူတုိ႔ကို CHOICE ဒါမွမဟုတ္ IF ERROR LEVEL တုိ႔နဲ႔ တြဲလိုက္တဲ့
အခါမွာေတာ့ သူတုိ႔ဟာ အရမ္းကို ****** လာပါလိမ့္မယ္။
CHOICE command ကေတာ့ Keyboard ကေနၿပီးေတာ့ user က ရိုက္ထည့္တာေတြကို လက္ခံၿပီးေတာ့ key တစ္ခုခုႏွိပ္လိုက္တဲ့ အခါမွာ error level ကို ထုတ္ေပးမွာၿဖစ္ပါတယ္။ သူ႔ရဲ႕ ေရးပုံေရးနည္းကေတာ့
CHOICE[string][/C:keys][/S][/N][/T:key,secs]
အဲဒီ့ Code ေတြတစ္ခုခ်င္းဆီရဲ႕ အဓိပၸါယ္ကို ရွင္းၿပပါ့မယ္။
string ဆုိတဲ့ အပိုင္းက သိပ္ေတာ့အေရးမၾကီးပါဘူး။ သူက CHOICE command run တဲ့အခါမွာ လိုခ်င္တဲ့ စာသားတစ္ခုခုကို ၿပသေပးယံုပါ။
/C:keys ဆုိတာကေတာ့ User က ရိုက္လုိက္မယ့္ ၿဖစ္နုိင္ေခ်ရိွတဲ့ key ေတြကို
ညႊန္းတာပါ။ အကယ္လို႔သာ key ေတြကို ၾကိဳတင္မသတ္မွတ္ထားဘူးဆုိရင္ေတာ့ သူ႔ရဲ႕
default က Y/N ၿဖစ္ပါတယ္။ ေအာက္က ဥပမာေလးကို ေလ့လာၾကည့္ရေအာင္ပါ….
CHOICE /C:A1T0
အေပၚက Code မွာ ဆုိရင္ေတာ့ က်ေနာ့္တို႔ဟာ A ၊ 1 ၊ T နဲ႔ 0 တုိ႔ကို ၿဖစ္နုိင္ေခ်ရိွတဲ့ key ေတြအေနနဲ႔ သတ္မွတ္ထားပါတယ္။ Program ကို run
လုိက္တဲ့ အခ်ိန္မွာ User က သာ က်ေနာ္တုိ႔ မသတ္မွတ္ထားတဲ့ key တစ္ခုခုကို
ႏွိပ္လုိက္မယ္ဆုိရင္ေတာ့ User အေနနဲ႔ တီ ဆုိတဲ့
အသံေလးၾကားရမွာၿဖစ္ၿပီးေတာ့ Program ကေတာ့ သူလိုအပ္တဲ့ အေၿဖမေရာက္လာမခ်င္း
ဆက္ run ေနပါလိမ့္မယ္။ ဒါဆုိရင္ေတာ့ /C:keys အပိုင္းကို သိပါၿပီ။
ေနာက္တစ္ခုအေနနဲ႔ /S ကိုရွင္းၿပေပးပါ့မယ္။ သူကေတာ့ က်ေနာ္တုိ႔ ခုနက /C:keys အပိုင္းမွာ ၾကိဳတင္သတ္မွတ္ထားတဲ့ key ေတြကို case sensitive
အၿဖစ္သတ္မွတ္တာပါ။ ထုိသို႔သတ္မွတ္ခ်င္းအားၿဖင့္ က်ေနာ္တို႔ Program ဟာ A
(အၾကီး) ဟုသတ္မွတ္ထားပါက user မွ A (အၾကီး) ကို လက္ခံမရရိွမၿခင္း
အလုပ္မလုပ္ေတာ့ပါဘူး။ ထုိ႔ေၾကာင့္ A ခ်င္းတူတာေတာင္မွ အလုပ္မလုပ္တဲ့
အၿဖစ္ကို ေတြ႔ရိွရမွာပါ။
/N အေၾကာင္းရွင္းၿပပါ့မယ္။ /N ဆုိတာကေတာ့ က်ေနာ္တုိ႔ ခုနက code ကို run တုန္းမွာ ေတြ႔ရမယ့္ [A,1,T,0]? ဆုိတာ ကို မေတြ႔ရေတာ့ဘဲနဲ႔ အမည္းေရာက္ေၿပာင္ကိုဘဲေတြ႔ရမွာပါ။ ထုိသို႔ /N ခံၿခင္းအားၿဖင့္ က်ေနာ္တုိ႔
ဘာကို ၾကိဳတင္သတ္မွတ္ထားတယ္ဆုိတာ ကို မသိရေတာ့ပါဘူး။ ၿပီးေတာ့
စိတ္ၾကိဳက္စာသားနဲ႔လည္း User ဆီကေန key တစ္ခုစီကို လက္ခံနုိင္ပါလိမ့္မယ္။
ဥပမာ…
@echo off
echo Please Choose Yes[Y] or No[N]
CHOICE /C:YN /N
အဲဒါဆုိရင္ေတာ့့ Please Choose Yes[Y] or No[N] ဆုိၿပီးေတာ့ သာ အမဲေရာင္ screen ေပၚမွာ ၿပသေပးမွာပါ။
/N ပါတာမပါတာကို ခုထိနားမလည္ရင္ေတာ့ အေပၚက ဥပမာမွာ /N ၿဖဳတ္ၿပီးသာ run လုိက္ပါ။ သိရပါလိ့မ္မယ္။
/T:key အေၾကာင္းဆက္လက္ ရွင္းၿပေပးပါ့မယ္။ သူကေတာ့ default key ကို ရည္ညႊန္းပါတယ္။
အကယ္လို႔မ်ား က်ေနာ္တုိ႔ ၾကိဳတင္သတ္မွတ္ထားတဲ့ key တစ္ခုခုထဲက user က တစ္ခုမွ မေရြးဘဲ ဒီတုိင္းထားရင္ အခ်ိန္ကန္႔သတ္ခ်က္ တစ္ခုကို ေ၇ာက္တဲ့
အခါမွာေတာ့ /T နဲ႔ program ကို default key တစ္ခုကို ေရြးခုိင္းလုိက္တာပါ။
ဥပမာအားၿဖင့္….
CHOICE Choose Browser /C:NI /T:I=.5
အေပၚက Code ကို run မယ္ဆုိရင္ေတာ့ Choose Browser[N,I]?
ဆုိၿပီးၿပမွာပါ.. အကယ္လို႔ User က ၅ စကၠန္႔အတြင္း ဘယ္ key ကိုမွ
မေရြးခဲ့ဘူးဆုိရင္ေတာ့ Program က default အေနနဲ႔ I ကို ေရြးလုိက္မွာပါ။
ဒီေလာက္ဆုိရင္ေတာ့ Choice Command ကို အၾကမ္းဖ်င္းသိေလာက္ၿပီထင္ပါတယ္။
က်ေနာ္ IF ERROR LEVEL နဲ႔ CHOICE ကို ေပါင္းၿပီးေရးသားနည္းကို ေၿပာၿပေပးပါမယ္။
ပထမဦးစြာ က်ေနာ္တုိ႔ဟာ CHOICE command က Error Level ကို ဘယ္လိုပံုစံမ်ိဳးနဲ႔ Return ၿပန္ေပးတယ္ဆုိတာ သိထားဖို႔လုိပါေသးတယ္။
CHOICE command ကေတာ့ က်ေနာ္တုိ႔ Program Run ေနတုန္းမွာ key တစ္ခုခုႏွိပ္တဲ့အေပၚမူတည္ၿပီးေတာ့ ERROR LEVEL ကို return ၿပန္ေပးသလို /C
မွာ ပါတဲ့ ၾကိဳတင္သတ္မွတ္ထားတဲ့ Key တစ္ခုခုေပၚမူတည္ၿပီးေတာ့ လည္း return
ၿပန္ေပးပါတယ္။ ေအာက္က ဥပမာေလးကို ၾကည့္ၿပီးနားလည္မွာပါ…
CHOICE /C:SY12
Error Level ေတြကို မေလ့လာခင္မွာ က်ေနာ္တုိ႔အေနနဲ႔ တစ္ခုသိထားရမွာက Error Level Code ေတြရဲ႕ တန္ဖိုးဟာ User ရိုက္ထည့္လုိက္တဲ့ key ေပၚမူတည္ၿပီးေတာ့ ေၿပာင္းလဲေနနုိင္ပါတယ္ဆုိတာပါ။ ဆုိလိုတာကေတာ့ အေပၚက Code
မွာဆုိရင္ S ကို ႏွိပ္ရင္ ရမယ့္ Error Level က 1 , Y ကို ႏွိပ္ရင္ေတာ့ 2 ,
1 ကို ႏွိပ္မယ္ဆုိရင္ေတာ့ 3 ၿဖစ္ၿပီးေတာ့ 2 ကို ႏွိပ္မယ္ဆုိရင္ေတာ့
ရရိွမယ့္ error level က 4 ဆုိၿပီးရရိွလာမွာပါ။ ဒီေလာက္ ဆုိရင္ေတာ့
က်ေနာ္တုိ႔ဟာ CHOICE command အေနနဲ႔ ဘယ္လုိဘယ္ပံုမ်ိဳးနဲ႔ ERROR Level
ေတြကို Return ၿပန္တယ္ဆိုတာ သိသြားပါၿပီ။
အခု ဆက္လက္ၿပီးေတာ့ IF ERROR LEVEL command က ဘယ္လိုအလုပ္လုပ္တယ္ ၊ သူ႔ကို ဘယ္လိုသံုးတယ္ဆုိတာေလ့လာပါမယ္။ သူ႔ရဲ႕ ေရးသားပံုေရးသားနည္းကေတာ့…
IF [NOT] ERRORLEVEL number command
အဲဒီ့ေကာင္ကေတာ့ လက္ရိွ Error ေပၚမူတည္ၿပီးေတာ့သာ အလုပ္လုပ္မွာၿဖစ္ပါတယ္။ လက္ရိွ ေပးထားတဲ့(စစ္ထားတဲ့) အေၿခအေနတစ္ခု (Error Level တစ္ခု) ဟာ မွန္တယ္ဆုိေတာ့မွ Program က အလုပ္လုပ္မွာပါ။ အဲဒါကို ဥပမာ
နဲ႔ ေလ့လာၾကည့္ရေအာင္…IF ERRORLEVEL 3 ECHO OK
အေပၚက Code ကို run မယ္ဆုိရင္ေတာ့ အကယ္လို႔ က်ေနာ္တုိ႔ရဲ႕ လက္ရိွ Error Level ကသာ 3 ၿဖစ္မယ္ဆုိရင္ OK ဆုိတာကို အမဲေရာင္စကရင္မွာ ၿမင္ရမွာပါ။
မွတ္ရန္ ၊၊ ၊၊ အေရးအၾကီးဆုံး တစ္ခ်က္ကေတာ့ Error Level ကို If နဲ႔ စစ္တဲ့ အခါမွာ စစ္လုိက္တဲ့ error level နဲ႔ ရလာမယ့္ error level ဟာ တူရင္တူ ၊ မတူရင္ၾကီးေနမွ Program အလုပ္လုပ္ပါမယ္။
အေပၚက Code မွာ ဆုိရင္ Error Level ဟာ 3 ထက္ၾကီး၇င္ၾကီး မၾကီးရင္တူမွ Program အလုပ္လုပ္မွာၿဖစ္ပါတယ္။
အခုဆုိရင္ေတာ့ က်ေနာ္တုိ႔ဟာ CHOICE နဲ႔ IF ERROR LEVEL အေၾကာင္းနားလည္သြားၿပီၿဖစ္လို႔ သူတုိ႔ ၂ ခုကို ေပါင္းစပ္ၾကည့္ဖို႔ ၾကိဳးစားရပါေတာ့မယ္။ တကယ္ေတာ့ ၾကိဳးစားစရာေတာင္မလုိေတာ့ပါဘူး သူတုိ႔ ၂
ခုကို တစ္ခုခ်င္းစီကို ေသခ်ာနားလည္ေနၿပီဆုိရင္ကို ေပါင္းစပ္ဖို႔က
ေတာ္ေတာ္ေလး လြယ္သြားပါၿပီ။
သူတုိ႔ ၂ ခုကို အေသအခ်ာ ေပါင္းစပ္တတ္မယ္ဆုိရင္ေတာ့ က်ေနာ္တုိ႔ဟာ Bat နဲ႔
Menu Based Program ေတြကို အလြယ္တကူ ေရးသားနုိင္တဲ့ အေၿခအေနကို
ေရာက္လာၿပီလုိ႔ဆုိရပါလိမ့္မယ္။ ေအာက္က ဥပမာေလးကို ေလ့လာၾကည့္ရေအာင္။ အဲဒီ့
ဥပမာဟာဆုိရင္ေတာ့ User ဆီကေနၿပီးေတာ့ အသံုးၿပဳဖို႔ Browser တစ္ခုကို Menu
အေနနဲ႔ ေရြးခိုင္းတာပါ။
(ဒီေနရာမွာ က်ေနာ္ တစ္ခုၿပန္ေၿပာခ်င္တာကေတာ့ က်ေနာ္ အရင္က Site Selection
Batch ဆုိၿပီးေတာ့ bat file တစ္ခု ဒီဖိုရမ္ထဲမွာ ေရးေပးခဲ့ဖူးပါေသးတယ္။
အဲဒါေလးနဲ႔ အခုဥပမာ ၿပမယ့္ဟာက သေဘာတရားတူေနလို႔ က်ေနာ္ သတိရလုိ႔
ၿပန္ေၿပာတာပါ။ အခု Post ကို ဖတ္ၿပီးရင္ အဲဒီ့ site selection batch ကို
မဖတ္ရေသးရင္ သြားဖတ္ၿပီးေတာ့ ေလ့လာလုိက္ပါ။ Code ေတြကို အလြယ္တကူ
နားလည္ပါလိမ့္မယ္။)
ကဲ ေအာက္က ဥပမာ ဆီဆက္လုိက္ရေအာင္….
@ECHO OFF
ECHO.
ECHO.
ECHO Welcome to Browser Selection Program
ECHO.
ECHO 1. Internet Explorer
ECHO 2. Mozilla Firefox
ECHO x. Exit Browser Selection Program
ECHO.
CHOICE “Please Choose Your Browser” /C:12x /N
IF ERRORLEVEL 3 GOTO END
IF ERRORLEVEL 2 START C:\progra~1\firefox.exe
IF ERRORLEVEL 1 start c:\progra~1\intern~1\iexplore.exe
:END
သတိၿပဳရန္ >> အေပၚက Code မွာ IF ERROR LEVEL ကို အမ်ားကေန အနည္း (၃ ကေန ၁) ကို ငယ္စဥ္ၾကီးလုိက္စီထားတာကို သတိၿပဳမိေစခ်င္ပါတယ္။
က်ေနာ္ ဒီေန႔ေတာ့ က်ေနာ့္ Tutorial ၊ က်ေနာ့္ ေရးသားပံု ၊ ေဆြးေႏြးပံု ဘယ္ေလာက္ထိေရာက္တယ္ ဆိုတာကို စမ္းသပ္တဲ့အေနနဲ႔ အေပၚက ဥပမာ ၿပလုိက္တဲ့ Code
ကို အစအဆုံးမရွင္းၿပေတာ့ပါဘူး။
လြယ္လည္း လြယ္လုိ႔ပါ။ ၾကည့္လိုက္တာနဲ႔ကို ဘာကဘယ္လိုဆုိတာ သိနုိင္ပါတယ္။
အရင္ကလုိ က်ေနာ္ အစအဆုံး ရွင္းၿပေနရင္ အစ္ကို ၊ အစ္မ တုိ႔အေနနဲ႔လည္း
တကယ္နားလည္မလည္ ဆုိတာ ကိုယ္တုိင္မသိနုိင္ဘူးၿဖစ္ေနပါလိမ့္မယ္။ အဲဒီ့ေတာ့
အခု က်ေနာ္ေပးတဲ့ ဥပမာကို မဖတ္ခင္ အေပၚက CHOICE နဲ႔ IF ERROR LEVEL ဆုိတဲ့
Command အေၾကာင္းကို အရင္ဖတ္ပါ ၊ သူတို႔ ၂ ခုကို နားလည္ၿပီဆုိမွ ဒီ
ဥပမာကို ဖတ္ပါ။ အကယ္လို႔ CHOICE နဲ႔ IF ERROR LEVEL command ေတြကိုသာ
တကယ္နားလည္သြားၿပီ ဆုိရင္ ဖတ္ရင္းနဲ႔တင္ ဒီဥပမာကို သေဘာေပါက္ေနပါၿပီ။
အဲဒီ့လုိဆုိရင္ က်ေနာ္ ေရးေပးရက်ိဳးလည္းနပ္ပါၿပီ။ အကယ္လို႔
အဲလိုလုပ္တာေတာင္ နားမလည္ဘူးဆုိရင္ေတာ့ က်ေနာ့္ေရးသားတင္ၿပပံု ၊
ေဆြးေႏြးပံုေတြ တစ္ခုမွမေကာင္းဘူးဟုသာ Feedback ေပးခဲ့ပါ။ က်ေနာ္လည္း
ဘယ္ေသာအခါမွ Tutorial ဆုိတာေတြကို ကိုယ္တုိင္လည္း ဆက္မေရးေတာ့သလို ၊
ဘာသာၿပန္ၿပီးေတာ့ေတာင္ မေရးေတာ့ပါဘူး။
က်ေနာ္ေဆြးေႏြးေပးမယ့္ အပိုင္းကေတာ့ Input/Output ရယ္ Redirect လုပ္တာရယ္စတဲ့ အပိုင္းေတြကို ေဆြးေႏြးေပးမွာပါ။ ဒီအပိုင္းကေတာ့ က်ေနာ္ သိပ္မသိလို႔ Internet ေပၚကေန ရွာေတြ႔ထားတာေတြကို ဘာသာၿပန္ထားတာပါ။ က်ေနာ္က
အဂၤလိပ္လို သိပ္မဖတ္တတ္လို႔ ဘာသာၿပန္တဲ့အခါမွာ ညံ့ခ်င္ညံ့ေနပါလိမ့္မယ္။
ခြင့္လႊတ္ေပးပါေနာ္။
System တစ္ခုဟာ ပံုမွန္အားၿဖင့္ေတာ့ Output ကို Screen ကေနထုတ္ၿပၿပီးေတာ့ ၊ Input ကိုေတာ့ Keyboard ကေနလက္ခံပါတယ္။ အဲလိုလုပ္တာဟာ လုပ္ရိုးလုပ္စဥ္ သိေနၾက ၿမင္ဖူးေနၾက လူတုိင္းသိတဲ့ လမ္းေဟာင္းၾကီးၿဖစ္တဲ့
အတြက္ က်ေနာ္တို႔ ပ်င္းရတာအမွန္ပါ။
အကယ္လို႔မ်ား Input တစ္ခုခုကို တၿခားတေနရာရာကေန လက္ခံၿပီးေတာ့ Output
ကိုလည္း တၿခားေနရာတစ္ခုခုကို သြားထုတ္ႏိုင္ရင္
ေပ်ာ္ဖို႔နည္းနည္းေကာင္းလာမွာေပါ့ေနာ္။ ဟုတ္တယ္ဟုတ္။
အဲလိုလုပ္ဖို႔လည္း နည္းလမ္းရိွပါသတဲ့။Output ကို Screen ေပၚသက္သက္တင္ၿပတာမဟုတ္ဘဲနဲ႔ တၿခားေနရာမွာ သြားရိွေနေစခ်င္ရင္ေတာ့ က်ေနာ္တုိ႔ဟာ Output Redirection Operator ၿဖစ္တဲ့
> ဆုိတာကို သံုးလို႔ရပါတယ္။
> ဆုိတာက ဘာလုပ္ေပးလည္းဆုိရင္ေတာ့ က်ေနာ္တို႔ Desktop ဒါမွမဟုတ္
တစ္ေနရာရာကို Print Screen ဖမ္းၿပီးေတာ့ Paint ထဲမွာ save လုပ္သလိုပါဘဲ။
သူကလည္း က်ေနာ္တုိ႔ ရဲ႕ bat program က ရလဒ္ေတြ အေၿဖေတြကို မွတ္ၿပီးေတာ့
text file တစ္ခုအေနနဲ႔ သိမ္းေပးတာပါ။
ဥပမာ တစ္ခုအေနနဲ႔ ေၿပာရမယ္ဆုိရင္ေတာ့….
အကယ္လို႔မ်ား က်ေနာ္တုိ႔ဟာ net ဆုိတဲ့ command အေၾကာင္းသိခ်င္လုိ႔ Command Prompt ထဲမွာ help ဆုိတာရိုက္ၿပီးေတာ့ ေမးလိုက္တယ္ဆုိပါစို႔။
အဲဒါဆုိရင္ေတာ့ ထြက္လာမယ့္ အေၿဖေတြက နည္းတာမဟုတ္တဲ့ အတြက္ေၾကာင့္ Screen
နဲ႔ လည္းမဆန္႔တာမ်ိဳး ၿဖစ္ႏုိင္သလို ၊ CommandPrompt က minimize
ၿဖစ္ေနရင္လည္း scroll ဆင္းသြားတာ တအားၿမန္လြန္းပါတယ္။ အဲဒါဆုိရင္
က်ေနာ္တုိ႔ အေနနဲ႔ လိုခ်င္တဲ့ အေၿဖကို ၿပန္ရွာတဲ့အခါ scroll bar
ကိုအေပၚတက္ေအာက္ဆင္းနဲ႔ အလုပ္ရႈပ္လြန္းပါတယ္။
အဲဒီ့ၿပႆနာမ်ိဳးကို ေၿဖရွင္းဖို႔ကေတာ့ Output Redirection ဆုိတဲ့ Operator
ေလးကို သံုးၿပီးေတာ့ ထြက္လာမယ့္ ရလဒ္ေတြကို text file ထဲမွာ သိမ္းလိုက္တာ
အဆင္အေၿပဆုံးပါဘဲ။
ေအာက္က help > help.txt ဆုိတဲ့ Code ေလးကို Command Prompt ကိုေခၚၿပီးေတာ့ ရိုက္ၾကည့္ပါ။
c:\ကိုယ္ေပးခ်င္တဲ့လမ္းေၾကာင္း > help > help.txt
အဲဒါဆုိရင္ေတာ့ က်ေနာ္တုိ႔ရိုက္လုိက္တဲ့ Command Prompt Screen ထဲမွာ ဘာမွက်လာမွာေတာ့မဟုတ္ေတာ့ေပမယ့္။ က်ေနာ္တို႔ ေရြးေပးခဲ့တဲ့ လမ္းေၾကာင္းေအာက္မွာ help.txt ဆိုတဲ့ text file ေလး ေရာက္ေနပါလိမ့္မယ္။
သူ႔ကို ဖြင့္ၾကည့္လိုက္ရင္ေတာ့ help ဆုိတဲ့ Command ကို
ရိုက္လုိက္ရင္ရလာမယ့္ အေၿဖေတြကို save လုပ္ေပးထားတာ ေတြ႔ရပါလိမ့္မယ္။ OK?
အဲ… တစ္ခုေတာ့ သတိေပးမယ္ေနာ္။ text file ရဲ႕ နာမည္ေပးရင္ အေရးၾကီးဖိုင္ေတြရဲ႕ နာမည္ေတြနဲ႔ သြားမထပ္ပါေစနဲ႔။
ဥပမာ က်ေနာ့္ဆီမွာ က်ေနာ့္ Password ေတြ သိမ္းတဲ့ password.txt ဆုိတဲ့ file ရိွတယ္ဆုိပါစို႔။ အဲဒီ့ password.txt ဆုိတဲ့ နာမည္နဲ႔ ခုနက help.txt
ဆိုတဲ့ေနရာမွာ ရိုက္ထည့္လိုက္ရင္ က်ေနာ္ သိမ္းထားတဲ့ Password
ေတြအားလုံးကို Overwrite လုပ္ပလိုက္ပါတယ္။
တုိတုိ နဲ႔ လြယ္လြယ္ ေၿပာရရင္ေတာ့ဗ်ာ အဲဒီ့ > ဆုိတဲ့ Operator ေလးက
file နာမည္တူေနတာ ေတြ႔ရင္ေတာင္မွ ဘာမေၿပာညာမေၿပာနဲ႔ ရိွၿပီးသား စာေတြကို
သူမွတ္ရမယ့္ အေၿဖနဲ႔ overwrite လုပ္လိုက္တယ္ဆုိတာပါ။ အကယ္လို႔မ်ား file
နာမည္အတူတူေပးမိခဲ့ရင္ေတာ့ ကိုယ့္အၿပစ္နဲ႔ကိုယ္ေနာ္။ က်ေနာ္ သတိေပးတယ္။
file နာမည္ တူတာမရိွရင္ေတာ့ ကိစၥမရိွပါဘူး။ သူ႔ဟာသူ အလုိလို create
လုပ္ေပးသြားလိမ့္မယ္။
ခုနက overwrite လုပ္တတ္တယ္လို႔ သတိေပးလိုက္တယ္ေနာ္။ ဒါေပမယ့္ အဲဒီ့ Overwrite လုပ္တာကို ေၿဖရွင္းဖုိ႔ နည္းတစ္ခုေတာ့ ရိွပါေသးတယ္။ ထပ္ၿဖည့္သြားတဲ့နည္းပါ။
အဲဒါကေတာ့ >> ဆုိတဲ့ Operator သံုးရမွာပါ။ က်ေနာ္တုိ႔ ခုနက
ဥပမာမွာဆုိရင္ေတာ့ help.txt ထဲကို help ရုိက္ရင္ထြက္လာမွာေတြ
သိမ္းထားၿပီးပါၿပီ။ အဲဒီ့ဟာေတြ အေနာက္မွာ ထပ္ၿဖည့္ခ်င္ရင္ေတာ့ ေအာက္က Code
ေလးနဲ႔ စမ္းၾကည့္လိုက္ပါ။
c:\ခုနက help.txt ရိွတဲ့လမ္းေၾကာင္း > net >> help.txt
Command Prompt ထဲမွာ အဲဒီ့လိုရုိက္လိုက္ရင္ေတာ့ က်ေနာ္တုိ႔ရဲ႕ ရိွၿပီးသား help.txt file ထဲမွာ net command ရဲ႕ အေၾကာင္းေလးကို ထပ္ၿဖည့္ၿပီးသားေတြ႔ရမွာပါ။ ရွင္းမယ္ထင္ပါတယ္ေနာ္။
အလြယ္နည္းမွတ္ထားဖို႔က >> ဆုိတာ ရိွၿပီးသား file တစ္ခုထဲကို စာထပ္ၿဖည့္တဲ့သေဘာပါ။
OK?
က်ေနာ္ ေၿပာရင္းေၿပာရင္းနဲ႔ bat file အေၾကာင္းကေန DOS ဘက္ႏြယ္သြားၿပီထင္တယ္။ အစကတည္းကလည္း Bat နဲ႔ DOS ဆုိတာ အတူတူပါဘဲ။ အဲဒီ့ေတာ့ က်ေနာ္လည္း ၿပည့္ၿပည့္စံုစံုေလး ေၿပာၿပခ်င္လုိ႔ Internet ေပၚမွာေမႊရင္းနဲ႔ ေတြ႔တာေတြ အကုန္ေပါင္းထည့္ၿပီးေတာ့ ဘာသာၿပန္ေပးလုိက္တာ။
ဟီး… အက်ိဳးေတာ့ရိွပါတယ္။ ဟုတ္တယ္ဟုတ္။
DOS ရဲ႕ Command ေတြ အေနနဲ႔ ခုနကလုိမ်ိဳး File ေတြဆီကိုသာ redirect လုပ္ေပးႏုိင္တာမဟုတ္ပါဘူး ၊ အမ်ိဳးမ်ိဳးေသာ Device ေတြဆီကိုလည္း redirect
လုပ္ေပးႏုိင္ပါေသးတယ္။ ေအာက္မွာ ဆက္ေလ့လာပါ။
Command အေနနဲ႔ ရုိက္ရမည့္ အမည္ Device အမည္
AUX Auxiliary Device (COM1)
CLOCK$ Real Time Clock
COMn Serial Port (COM1, COM2, Com3, COM4)
CON Console (Keyboard, Screen)
LPTn Parallel Port (LPT1, LPT2, LPT3)
NUL NUL Device (ဘာမွမရိွတာကို ဆုိလိုတာပါ)
PRN Printer
ဥပမာ အေနနဲ႔ ၾကည့္မယ္ဆုိရင္ေတာ့…. အကယ္္လို႔မ်ား က်ေနာ္တို႔ဟာ directory ရဲ႕ list ကို Print ထုတ္ခ်င္တယ္ဆုိရင္ ေအာက္က Command ကို သံုးလုိ႔ရပါတယ္။
c:\မိမိ ေရြးခ်ယ္ေသာ ႏွစ္သက္ရာ လမ္းေၾကာင္း>dir *.* > prn
အဲဒါဆုိရင္ စက္နဲ႔ ခ်ိတ္ဆက္ထားတဲ့ Printer ကေန Print ထုတ္ပါလိမ့္မယ္။ တၿခား Command ေတြလည္း သူတုိ႔နဲ႔ ဆုိင္ရာဆုိင္ရာ အလုပ္ကို လုပ္ၾကပါတယ္။
အဲဒီ့မွာ ခက္တာ တစ္ခုက NUL ဆုိတဲ့ Device ပါ။ က်ေနာ္ အစက သူ႔ကို ဘယ္နားမွာ သံုးရမယ္မွန္းမသိခဲ့ဘူးဗ်။
အဲဒါနဲ႔ ေဘာ္ဒါၾကီး ေဂၚဂယ္ ဆီသြားေမးေတာ့ ဒီလုိေလးေၿပာထားေလရဲ႕….
NUL Device ကိုေနာက္တစ္မ်ိဳးအေနနဲ႔ ‘bit bucket’ လုိ႔ေခၚပါသတဲ့။ သူ႔ကို Redirect လုပ္ခ်င္တဲ့ ဘယ္ေနရာမွာမွ သံုးေလ့မရိွပါဘူး။ ဒါေပမယ့္
လုပ္ခ်င္တဲ့ အလုပ္ၿပီးေၿမာက္ေၾကာင္း Message ၿပခ်င္တာမ်ိဳးမွာေတာ့
သံုးေလ့ရိွပါတယ္။ ဥပမာ… က်ေနာ္တို႔ File တစ္ဖိုင္ကို DOS မွာ COPY
လုပ္လုိက္တယ္ဆုိရင္ေတာ့ အလုပ္ၿပီးေၿမာက္ေၾကာင္းကို 1 file(s) coppied.
ဆုိၿပီးေတာ့ ၿပတတ္ပါတယ္။ အဲလိုမ်ိဳးကို Redirect လုပ္တဲ့ အခါမွာ
ၿပခ်င္တယ္ဆုိရင္ေတာ့….
C:\မိမိလမ္းေၾကာင္း > copy test.txt > NUL
အဲဒီ့ အေပၚက Code ေလးသံုးလိုက္ရင္ ရပါၿပီ။ အဲဒါဆုိရင္ေတာ့ က်ေနာ္တုိ႔ လိုခ်င္တဲ့ 1 file(s) coppied. ဆုိၿပီးေတာ့ ၿပပါလိမ့္မယ္။ OK?
ဒီေလာက္ဆုိရင္ေတာ့ က်ေနာ္တုိ႔ဟာ Output ကို Redirect လုပ္ၿခင္းနဲ႔ ပတ္သက္ၿပီး သိသြားပါၿပီ။ ေနာက္တစ္ခန္းမွာေတာ့ Input ကို Redirect လုပ္ၾကည့္ပါမယ္။
က်ေနာ္ေဆြးေႏြးေပးမယ့္ အေၾကာင္းအရာကေတာ့ Input ကို redirect လုပ္ၿခင္းပါ။
သူမွာ့လည္း က်ေနာ္တုိ႔ Output မွာတုန္းက လုပ္ခဲ့သလိုမ်ိဳးပါဘဲ Operator တစ္ခုရိွပါတယ္။ အဲဒါကေတာ့ ၿဖစ္ၿပီး အခု Input မွာေတာ့ < ပါ။
C တုိ႔ C++ တုိ႔နဲ႔ နည္းနည္းဘဲကြာတယ္ေနာ္။ ဟိုမွာက cout<> ေလ… သိပ္မလြဲပါဘူး။
Input Redirection Operator ကို ဘယ္လုိသံုးၾကလဲဆုိတာကေတာ့ ရွင္းပါတယ္ ၊
က်ေနာ္တုိ႔ text file မွာ ရိွတာေတြကို DOS ထဲေၿပာင္းထည့္တဲ့ အခါမ်ိဳးမွာ
သံုးၾကတာပါ။ Output တုန္းက DOS ကေန text file ဆီကို လႊဲၿပီးေတာ့ အခု Input
မွာေတာ့ text file ကေန DOS ကို လႊဲတဲ့သေဘာပါ။
သူ႔ကိုေတာ့ က်ေနာ္တုိ႔ဟာ Command တစ္ခ်ိဳ႕နဲ႔ တြဲသံုးေလ့ရိွပါတယ္။ အဲဒီ့ Command ေတြကေတာ့ MORE နဲ႔ TYPE ဘဲၿဖစ္ပါတယ္။
MORE ဆုိတာက က်ေနာ္တို႔ရဲ႕ Text File ထဲက စာသားေတြဟာ တအားရွည္တဲ့ အခါမ်ိဳးမွာ Screen တစ္ခ်ပ္စာကို တစ္ခါၿပေပးတဲ့ command ၿဖစ္ပါတယ္။ တနည္းအားၿဖင့္ Scroll ဆဲြရန္လိုတဲ့ စာသားေတြကို Screen Size ဆန္႔သေလာက္
တစ္ခါဆီၿပေပးတဲ့ command ပါ။ သူက Enter တစ္ခါေခါက္ရင္
တစ္လိုင္းဆင္းေပးပါတယ္။ (ေရးထားတာ ရႈပ္လုိ႔ နားလည္ပါ့မလားမသိဘူး)TYPE ဆုိတာကေတာ့ က်ေနာ္တုိ႔ရဲ႕ Text File ထဲက စာသားရိွသေလာက္ကို တစ္ခါတည္းနဲ႔ Scroll ဆြဲၿပီးၿပတဲ့ Command ပါ။ သူ႔ရဲ႕ Scroll လုပ္သြားတဲ့
speed က တအားၿမန္ေတာ့ ေအာက္ဆုံးေရာက္ၿပီးမွ အေပၚကို တစ္ခါ ၿပန္တက္ရရင္ ၊
စာတအားရွည္တဲ့ အခါမ်ိဳးမွာ အခက္ေတြ႔ႏုိင္ပါတယ္။ (ဒါေကာ နားလည္ရဲ႕လား။
နားမလည္ရင္ ၿပန္ေမးပါေနာ္။)
အဲဒီ့ Command ႏွစ္ခုရဲ႕ အဓိပၸါယ္ကို နားလည္ၾကတယ္ဆုိရင္ေတာ့ ၊ ဘယ္ Command က ကိုယ္နဲ႔ အသင့္ေတာ္ဆုံး ၿဖစ္မယ္။ အသံုးၿပဳမယ့္သူနဲ႔ အသင့္ေတာ္ဆုံး ၿဖစ္မယ္ဆုိတာ စဥ္းစားၿပီး သံုးၾကပါ။ (က်ေနာ္ကေတာ့ TYPE မွ
TYPE ဘဲ… More က enter ေခါက္ရတာ လက္ေညာင္းလို႔။ )
ဘာကြာသလဲဆုိတာ ေသခ်ာသိခ်င္ရင္ ေအာက္က Code ကို Command Prompt ထဲမွာ သြားရိုက္ၾကည့္လိုက္ပါ။
C:\မိမိ import (or) redirect လုပ္မယ့္ file ရိွသည့္လမ္းေၾကာင္း > MORE echo y | del *.*
အဲဒီ့ Code ကို ၾကည့္ရင္ေတာ့ နားလည္ၿပီထင္ပါတယ္။ echo နဲ႔ y ကို ရိုက္ထုတ္ပါတယ္။ အဲဒီ့အတြက္ y ဟာ အဲဒီ့ အခ်ိန္မွာ output တစ္ခုၿဖစ္ပါတယ္။
သူ႔ေနာက္မွာေတာ့ | ဆုိၿပီးေတာ့ Pipe Operator တစ္ခုသံုးထားပါတယ္။
အဲလိုသံုးထားတဲ့ အတြက္ က်ေနာ္တုိ႔ဟာ del တဲ့ Command ကလိုအပ္တဲ့ import
တစ္ခုၿဖစ္တဲ့ y ေနရာမွာ ခုနက ထြက္လာတဲ့ output ၿဖစ္တဲ့ y ကို
သံုးလိုက္ပါတယ္။OK? (ဟူး… ဒီေလာက္ ဆုိရင္ေတာ့ သေဘာေပါက္ၿပီထင္ပါတယ္။)
အခုေရးခဲ့တဲ့ နည္းေတြကေတာ့ Input Redirect လုပ္နည္းမ်ားၿဖစ္ပါတယ္။ ပံုမွန္လုပ္ေနၾကၿဖစ္တဲ့ Keyboard ကေန Input သြင္းတာထက္ ၊ မိမိရဲ႕ System
ထဲမွာဘဲ Input ကို လွည့္သံုးသြားတဲ့နည္းပါ။ လုပ္ရတာ
ေပ်ာ္ဖို႔ေကာင္းတယ္ေနာ္။ (အခု စာဖတ္သူေတာ့ ေပ်ာ္မေပ်ာ္မသိဘူး။
က်ေနာ့္အတြက္ေတာ့ ဒါေတြ ေလ့လာခဲ့ရတဲ့ အခ်ိန္ဟာ ေပ်ာ္ဖို႔ အေကာင္းဆုံးပါဘဲ။
ဘာမွန္းမသိဘဲနဲ႔ Screen မဲမဲၾကီးမွာ စာေတြ က်လာတာကို ေပ်ာ္ခဲ့တာေလ။
အခုေတာ့ ပ်က္ဆီးေနၿပီ… ဘာမွလုပ္ခ်င္စိတ္ ၊ ေလ့လာခ်င္စိတ္မရိွဘူးၿဖစ္ေနတယ္။)
Batch File Programming က တကယ္ေလ့လာရင္ အရမ္းကို လြယ္တဲ့ဟာတစ္ခုပါ။ ၿပီးေတာ့ သံုးတတ္ရင္ သံုးတတ္သလို အက်ိဳးလည္းရိွၿပီးေတာ့ ၊ သံုးရတာလည္း
တကယ္ ေပ်ာ္ဖို႔ ေကာင္းပါတယ္။ သူ႔ကိုေလ့လာခ်င္တယ္ ဆုိရင္လည္း တၿခားဟာေတြလို
မ်ားမ်ားစားစား knowledge ရိွစရာမလိုပါဘူး။ DOS Command ေတြကို
နည္းနည္းပါးပါး အကြ်မ္းတ၀င္ရိွတယ္ဆုိရင္ဘဲ လုပ္စားလို႔ရေနၿပီ။
DOS Command ေတြနဲ႔ ပါတ္သက္လို႔ ေလ့လာလို႔ရတဲ့ site ေတြ
အမ်ားၾကီးရွိပါတယ္။ အဲဒီ့မွာေလ့လာပါ ၊ ဖတ္ပါ ၊ မွတ္ပါ ၊ သင္ယူပါ ၊
ကိုယ္တုိင္လုပ္ၾကည့္ပါ။ အဲလို site ေတြမွာ တစ္ခါတစ္ေလဆုိရင္ DOS ရဲ႕
Hidden Command ေတြလည္း မေရမတြက္ႏုိင္ေအာင္ရွိေနတတ္ပါတယ္။
အဲလိုလုပ္ၿပီးေတာ့ ေလ့လာလုိက္မယ္ဆုိရင္ Batch File Programming မွာ
ဆရာတစ္ဆူၿဖစ္လာႏုိင္တယ္။
အေပၚမွာေရးခဲ့ဖူးတုန္းကလုိဘဲ ဆရာတစ္ဆူၿဖစ္ရင္ ဘာလုပ္လို႔ရလဲေတာ့
မေမးၾကနဲ႔ေနာ္။ က်ေနာ္လည္း Bat ကို အိတ္စပါတ္ မဟုတ္သလို စပယ္ရွယ္လစ္
လဲဟုတ္ဘူး။ ဘာလုပ္လုိ႔ရလဲဆုိတာလည္း ကိုယ့္ေပၚဘဲမူတည္တယ္ေနာ္။ က်ေနာ္
ေၿပာတာ ၂ ခါရိွၿပီ… ထပ္ေမးၾကနဲ႔ )
ဒီေန႔ေတာ့ ဒီေလာက္ဘဲေနာ္။ ေနာက္တစ္ခါ ဘာေရးရမယ္မွန္းက ခုထိမသိေသးလို႔ ၊
ၿပန္ေၿပာင္းထားပါတယ္။ မူရင္းေရးသားသူကေတာ့ ဘယ္သူမွန္းမသိေပမယ့္ CHOICE နဲ႔
ပတ္သက္ၿပီးေတာ့ သူေရးထားတဲ့ မူရင္းကေတာ့ ေတာ္ေတာ္ေကာင္းတယ္ဗ်… အကယ္လို႔
မ်ား Choice နဲ႔ ပတ္သက္ၿပီး နားမလည္ခဲ့ရင္ေတာ့ က်ေနာ့္ ရဲ႕
ဘာသာၿပန္ညံ့ဖ်င္းမႈနဲ႔ အတူ မူရင္းေရးသားပံုေရးသားနည္းကေန
က်ေနာ့္ေရးပံုေရးနည္းကို ေၿပာင္းလိုက္တဲ့အခါမွာၿဖစ္လာတဲ့
လိုအပ္ခ်က္ေၾကာင့္ မေကာင္းၿခင္းလို႔သာ မွတ္ယူေပးပါ။
CHOICE command ကို မေၿပာခင္ က်ေနာ္တုိ႔ Error Level အေၾကာင္းကို အရင္ေဆြးေႏြးၾကည့္ပါမယ္။
Error Level ဆုိတာကေတာ့ Program က သူၿပီးဆုံးသြားတဲ့ အခ်ိန္မွာ သတ္မွတ္လိုက္တဲ့ အခ်က္တစ္ခ်က္ပါ။
ဥပမာ… က်ေနာ္တုိ႔ ဟာ bat file တစ္ခုကို run ေနစဥ္မွာ Program
မၿပီးဆုံးေသးဘဲနဲ႔ CTRL+C ကို ႏွိပ္လုိက္လို႔ ရပ္သြားရတဲ့ ၿဖစ္ရပ္မ်ိဳးမွာ
ဆုိရင္ Error Level ကို 3 လို႔ သတ္မွတ္ပါတယ္။ အဲလိုမဟုတ္ဘဲနဲ႔ Program ဟာ
သူ႔ လုပ္ငန္းအားလုံးၿပီးဆုံးသြားလို႔ ပံုမွန္ ၿပီးဆုံးၿခင္းမ်ိဳးနဲ႔
ဘာအေႏွာက္အယွက္မွ မရိွဘဲၿပီးခဲ့ရင္ေတာ့ Error Level ကို 0 ဟု
သတ္မွတ္ပါတယ္။ Error Level ေတြဟာ သူ႔ဟာနဲ႔သူ သီးၿခားရပ္တည္ေနတဲ့
အခါမ်ိဳးမွာေတာ့ ဘာမွ ၿပႆနာမရိွနုိင္ေပမယ့္ (သို႔) အသံုးမ၀င္နုိင္ေပမယ့္
သူတုိ႔ကို CHOICE ဒါမွမဟုတ္ IF ERROR LEVEL တုိ႔နဲ႔ တြဲလိုက္တဲ့
အခါမွာေတာ့ သူတုိ႔ဟာ အရမ္းကို ****** လာပါလိမ့္မယ္။
CHOICE command ကေတာ့ Keyboard ကေနၿပီးေတာ့ user က ရိုက္ထည့္တာေတြကို လက္ခံၿပီးေတာ့ key တစ္ခုခုႏွိပ္လိုက္တဲ့ အခါမွာ error level ကို ထုတ္ေပးမွာၿဖစ္ပါတယ္။ သူ႔ရဲ႕ ေရးပုံေရးနည္းကေတာ့
CHOICE[string][/C:keys][/S][/N][/T:key,secs]
အဲဒီ့ Code ေတြတစ္ခုခ်င္းဆီရဲ႕ အဓိပၸါယ္ကို ရွင္းၿပပါ့မယ္။
string ဆုိတဲ့ အပိုင္းက သိပ္ေတာ့အေရးမၾကီးပါဘူး။ သူက CHOICE command run တဲ့အခါမွာ လိုခ်င္တဲ့ စာသားတစ္ခုခုကို ၿပသေပးယံုပါ။
/C:keys ဆုိတာကေတာ့ User က ရိုက္လုိက္မယ့္ ၿဖစ္နုိင္ေခ်ရိွတဲ့ key ေတြကို
ညႊန္းတာပါ။ အကယ္လို႔သာ key ေတြကို ၾကိဳတင္မသတ္မွတ္ထားဘူးဆုိရင္ေတာ့ သူ႔ရဲ႕
default က Y/N ၿဖစ္ပါတယ္။ ေအာက္က ဥပမာေလးကို ေလ့လာၾကည့္ရေအာင္ပါ….
CHOICE /C:A1T0
အေပၚက Code မွာ ဆုိရင္ေတာ့ က်ေနာ့္တို႔ဟာ A ၊ 1 ၊ T နဲ႔ 0 တုိ႔ကို ၿဖစ္နုိင္ေခ်ရိွတဲ့ key ေတြအေနနဲ႔ သတ္မွတ္ထားပါတယ္။ Program ကို run
လုိက္တဲ့ အခ်ိန္မွာ User က သာ က်ေနာ္တုိ႔ မသတ္မွတ္ထားတဲ့ key တစ္ခုခုကို
ႏွိပ္လုိက္မယ္ဆုိရင္ေတာ့ User အေနနဲ႔ တီ ဆုိတဲ့
အသံေလးၾကားရမွာၿဖစ္ၿပီးေတာ့ Program ကေတာ့ သူလိုအပ္တဲ့ အေၿဖမေရာက္လာမခ်င္း
ဆက္ run ေနပါလိမ့္မယ္။ ဒါဆုိရင္ေတာ့ /C:keys အပိုင္းကို သိပါၿပီ။
ေနာက္တစ္ခုအေနနဲ႔ /S ကိုရွင္းၿပေပးပါ့မယ္။ သူကေတာ့ က်ေနာ္တုိ႔ ခုနက /C:keys အပိုင္းမွာ ၾကိဳတင္သတ္မွတ္ထားတဲ့ key ေတြကို case sensitive
အၿဖစ္သတ္မွတ္တာပါ။ ထုိသို႔သတ္မွတ္ခ်င္းအားၿဖင့္ က်ေနာ္တို႔ Program ဟာ A
(အၾကီး) ဟုသတ္မွတ္ထားပါက user မွ A (အၾကီး) ကို လက္ခံမရရိွမၿခင္း
အလုပ္မလုပ္ေတာ့ပါဘူး။ ထုိ႔ေၾကာင့္ A ခ်င္းတူတာေတာင္မွ အလုပ္မလုပ္တဲ့
အၿဖစ္ကို ေတြ႔ရိွရမွာပါ။
/N အေၾကာင္းရွင္းၿပပါ့မယ္။ /N ဆုိတာကေတာ့ က်ေနာ္တုိ႔ ခုနက code ကို run တုန္းမွာ ေတြ႔ရမယ့္ [A,1,T,0]? ဆုိတာ ကို မေတြ႔ရေတာ့ဘဲနဲ႔ အမည္းေရာက္ေၿပာင္ကိုဘဲေတြ႔ရမွာပါ။ ထုိသို႔ /N ခံၿခင္းအားၿဖင့္ က်ေနာ္တုိ႔
ဘာကို ၾကိဳတင္သတ္မွတ္ထားတယ္ဆုိတာ ကို မသိရေတာ့ပါဘူး။ ၿပီးေတာ့
စိတ္ၾကိဳက္စာသားနဲ႔လည္း User ဆီကေန key တစ္ခုစီကို လက္ခံနုိင္ပါလိမ့္မယ္။
ဥပမာ…
@echo off
echo Please Choose Yes[Y] or No[N]
CHOICE /C:YN /N
အဲဒါဆုိရင္ေတာ့့ Please Choose Yes[Y] or No[N] ဆုိၿပီးေတာ့ သာ အမဲေရာင္ screen ေပၚမွာ ၿပသေပးမွာပါ။
/N ပါတာမပါတာကို ခုထိနားမလည္ရင္ေတာ့ အေပၚက ဥပမာမွာ /N ၿဖဳတ္ၿပီးသာ run လုိက္ပါ။ သိရပါလိ့မ္မယ္။
/T:key အေၾကာင္းဆက္လက္ ရွင္းၿပေပးပါ့မယ္။ သူကေတာ့ default key ကို ရည္ညႊန္းပါတယ္။
အကယ္လို႔မ်ား က်ေနာ္တုိ႔ ၾကိဳတင္သတ္မွတ္ထားတဲ့ key တစ္ခုခုထဲက user က တစ္ခုမွ မေရြးဘဲ ဒီတုိင္းထားရင္ အခ်ိန္ကန္႔သတ္ခ်က္ တစ္ခုကို ေ၇ာက္တဲ့
အခါမွာေတာ့ /T နဲ႔ program ကို default key တစ္ခုကို ေရြးခုိင္းလုိက္တာပါ။
ဥပမာအားၿဖင့္….
CHOICE Choose Browser /C:NI /T:I=.5
အေပၚက Code ကို run မယ္ဆုိရင္ေတာ့ Choose Browser[N,I]?
ဆုိၿပီးၿပမွာပါ.. အကယ္လို႔ User က ၅ စကၠန္႔အတြင္း ဘယ္ key ကိုမွ
မေရြးခဲ့ဘူးဆုိရင္ေတာ့ Program က default အေနနဲ႔ I ကို ေရြးလုိက္မွာပါ။
ဒီေလာက္ဆုိရင္ေတာ့ Choice Command ကို အၾကမ္းဖ်င္းသိေလာက္ၿပီထင္ပါတယ္။
က်ေနာ္ IF ERROR LEVEL နဲ႔ CHOICE ကို ေပါင္းၿပီးေရးသားနည္းကို ေၿပာၿပေပးပါမယ္။
ပထမဦးစြာ က်ေနာ္တုိ႔ဟာ CHOICE command က Error Level ကို ဘယ္လိုပံုစံမ်ိဳးနဲ႔ Return ၿပန္ေပးတယ္ဆုိတာ သိထားဖို႔လုိပါေသးတယ္။
CHOICE command ကေတာ့ က်ေနာ္တုိ႔ Program Run ေနတုန္းမွာ key တစ္ခုခုႏွိပ္တဲ့အေပၚမူတည္ၿပီးေတာ့ ERROR LEVEL ကို return ၿပန္ေပးသလို /C
မွာ ပါတဲ့ ၾကိဳတင္သတ္မွတ္ထားတဲ့ Key တစ္ခုခုေပၚမူတည္ၿပီးေတာ့ လည္း return
ၿပန္ေပးပါတယ္။ ေအာက္က ဥပမာေလးကို ၾကည့္ၿပီးနားလည္မွာပါ…
CHOICE /C:SY12
Error Level ေတြကို မေလ့လာခင္မွာ က်ေနာ္တုိ႔အေနနဲ႔ တစ္ခုသိထားရမွာက Error Level Code ေတြရဲ႕ တန္ဖိုးဟာ User ရိုက္ထည့္လုိက္တဲ့ key ေပၚမူတည္ၿပီးေတာ့ ေၿပာင္းလဲေနနုိင္ပါတယ္ဆုိတာပါ။ ဆုိလိုတာကေတာ့ အေပၚက Code
မွာဆုိရင္ S ကို ႏွိပ္ရင္ ရမယ့္ Error Level က 1 , Y ကို ႏွိပ္ရင္ေတာ့ 2 ,
1 ကို ႏွိပ္မယ္ဆုိရင္ေတာ့ 3 ၿဖစ္ၿပီးေတာ့ 2 ကို ႏွိပ္မယ္ဆုိရင္ေတာ့
ရရိွမယ့္ error level က 4 ဆုိၿပီးရရိွလာမွာပါ။ ဒီေလာက္ ဆုိရင္ေတာ့
က်ေနာ္တုိ႔ဟာ CHOICE command အေနနဲ႔ ဘယ္လုိဘယ္ပံုမ်ိဳးနဲ႔ ERROR Level
ေတြကို Return ၿပန္တယ္ဆိုတာ သိသြားပါၿပီ။
အခု ဆက္လက္ၿပီးေတာ့ IF ERROR LEVEL command က ဘယ္လိုအလုပ္လုပ္တယ္ ၊ သူ႔ကို ဘယ္လိုသံုးတယ္ဆုိတာေလ့လာပါမယ္။ သူ႔ရဲ႕ ေရးသားပံုေရးသားနည္းကေတာ့…
IF [NOT] ERRORLEVEL number command
အဲဒီ့ေကာင္ကေတာ့ လက္ရိွ Error ေပၚမူတည္ၿပီးေတာ့သာ အလုပ္လုပ္မွာၿဖစ္ပါတယ္။ လက္ရိွ ေပးထားတဲ့(စစ္ထားတဲ့) အေၿခအေနတစ္ခု (Error Level တစ္ခု) ဟာ မွန္တယ္ဆုိေတာ့မွ Program က အလုပ္လုပ္မွာပါ။ အဲဒါကို ဥပမာ
နဲ႔ ေလ့လာၾကည့္ရေအာင္…IF ERRORLEVEL 3 ECHO OK
အေပၚက Code ကို run မယ္ဆုိရင္ေတာ့ အကယ္လို႔ က်ေနာ္တုိ႔ရဲ႕ လက္ရိွ Error Level ကသာ 3 ၿဖစ္မယ္ဆုိရင္ OK ဆုိတာကို အမဲေရာင္စကရင္မွာ ၿမင္ရမွာပါ။
မွတ္ရန္ ၊၊ ၊၊ အေရးအၾကီးဆုံး တစ္ခ်က္ကေတာ့ Error Level ကို If နဲ႔ စစ္တဲ့ အခါမွာ စစ္လုိက္တဲ့ error level နဲ႔ ရလာမယ့္ error level ဟာ တူရင္တူ ၊ မတူရင္ၾကီးေနမွ Program အလုပ္လုပ္ပါမယ္။
အေပၚက Code မွာ ဆုိရင္ Error Level ဟာ 3 ထက္ၾကီး၇င္ၾကီး မၾကီးရင္တူမွ Program အလုပ္လုပ္မွာၿဖစ္ပါတယ္။
အခုဆုိရင္ေတာ့ က်ေနာ္တုိ႔ဟာ CHOICE နဲ႔ IF ERROR LEVEL အေၾကာင္းနားလည္သြားၿပီၿဖစ္လို႔ သူတုိ႔ ၂ ခုကို ေပါင္းစပ္ၾကည့္ဖို႔ ၾကိဳးစားရပါေတာ့မယ္။ တကယ္ေတာ့ ၾကိဳးစားစရာေတာင္မလုိေတာ့ပါဘူး သူတုိ႔ ၂
ခုကို တစ္ခုခ်င္းစီကို ေသခ်ာနားလည္ေနၿပီဆုိရင္ကို ေပါင္းစပ္ဖို႔က
ေတာ္ေတာ္ေလး လြယ္သြားပါၿပီ။
သူတုိ႔ ၂ ခုကို အေသအခ်ာ ေပါင္းစပ္တတ္မယ္ဆုိရင္ေတာ့ က်ေနာ္တုိ႔ဟာ Bat နဲ႔
Menu Based Program ေတြကို အလြယ္တကူ ေရးသားနုိင္တဲ့ အေၿခအေနကို
ေရာက္လာၿပီလုိ႔ဆုိရပါလိမ့္မယ္။ ေအာက္က ဥပမာေလးကို ေလ့လာၾကည့္ရေအာင္။ အဲဒီ့
ဥပမာဟာဆုိရင္ေတာ့ User ဆီကေနၿပီးေတာ့ အသံုးၿပဳဖို႔ Browser တစ္ခုကို Menu
အေနနဲ႔ ေရြးခိုင္းတာပါ။
(ဒီေနရာမွာ က်ေနာ္ တစ္ခုၿပန္ေၿပာခ်င္တာကေတာ့ က်ေနာ္ အရင္က Site Selection
Batch ဆုိၿပီးေတာ့ bat file တစ္ခု ဒီဖိုရမ္ထဲမွာ ေရးေပးခဲ့ဖူးပါေသးတယ္။
အဲဒါေလးနဲ႔ အခုဥပမာ ၿပမယ့္ဟာက သေဘာတရားတူေနလို႔ က်ေနာ္ သတိရလုိ႔
ၿပန္ေၿပာတာပါ။ အခု Post ကို ဖတ္ၿပီးရင္ အဲဒီ့ site selection batch ကို
မဖတ္ရေသးရင္ သြားဖတ္ၿပီးေတာ့ ေလ့လာလုိက္ပါ။ Code ေတြကို အလြယ္တကူ
နားလည္ပါလိမ့္မယ္။)
ကဲ ေအာက္က ဥပမာ ဆီဆက္လုိက္ရေအာင္….
@ECHO OFF
ECHO.
ECHO.
ECHO Welcome to Browser Selection Program
ECHO.
ECHO 1. Internet Explorer
ECHO 2. Mozilla Firefox
ECHO x. Exit Browser Selection Program
ECHO.
CHOICE “Please Choose Your Browser” /C:12x /N
IF ERRORLEVEL 3 GOTO END
IF ERRORLEVEL 2 START C:\progra~1\firefox.exe
IF ERRORLEVEL 1 start c:\progra~1\intern~1\iexplore.exe
:END
သတိၿပဳရန္ >> အေပၚက Code မွာ IF ERROR LEVEL ကို အမ်ားကေန အနည္း (၃ ကေန ၁) ကို ငယ္စဥ္ၾကီးလုိက္စီထားတာကို သတိၿပဳမိေစခ်င္ပါတယ္။
က်ေနာ္ ဒီေန႔ေတာ့ က်ေနာ့္ Tutorial ၊ က်ေနာ့္ ေရးသားပံု ၊ ေဆြးေႏြးပံု ဘယ္ေလာက္ထိေရာက္တယ္ ဆိုတာကို စမ္းသပ္တဲ့အေနနဲ႔ အေပၚက ဥပမာ ၿပလုိက္တဲ့ Code
ကို အစအဆုံးမရွင္းၿပေတာ့ပါဘူး။
လြယ္လည္း လြယ္လုိ႔ပါ။ ၾကည့္လိုက္တာနဲ႔ကို ဘာကဘယ္လိုဆုိတာ သိနုိင္ပါတယ္။
အရင္ကလုိ က်ေနာ္ အစအဆုံး ရွင္းၿပေနရင္ အစ္ကို ၊ အစ္မ တုိ႔အေနနဲ႔လည္း
တကယ္နားလည္မလည္ ဆုိတာ ကိုယ္တုိင္မသိနုိင္ဘူးၿဖစ္ေနပါလိမ့္မယ္။ အဲဒီ့ေတာ့
အခု က်ေနာ္ေပးတဲ့ ဥပမာကို မဖတ္ခင္ အေပၚက CHOICE နဲ႔ IF ERROR LEVEL ဆုိတဲ့
Command အေၾကာင္းကို အရင္ဖတ္ပါ ၊ သူတို႔ ၂ ခုကို နားလည္ၿပီဆုိမွ ဒီ
ဥပမာကို ဖတ္ပါ။ အကယ္လို႔ CHOICE နဲ႔ IF ERROR LEVEL command ေတြကိုသာ
တကယ္နားလည္သြားၿပီ ဆုိရင္ ဖတ္ရင္းနဲ႔တင္ ဒီဥပမာကို သေဘာေပါက္ေနပါၿပီ။
အဲဒီ့လုိဆုိရင္ က်ေနာ္ ေရးေပးရက်ိဳးလည္းနပ္ပါၿပီ။ အကယ္လို႔
အဲလိုလုပ္တာေတာင္ နားမလည္ဘူးဆုိရင္ေတာ့ က်ေနာ့္ေရးသားတင္ၿပပံု ၊
ေဆြးေႏြးပံုေတြ တစ္ခုမွမေကာင္းဘူးဟုသာ Feedback ေပးခဲ့ပါ။ က်ေနာ္လည္း
ဘယ္ေသာအခါမွ Tutorial ဆုိတာေတြကို ကိုယ္တုိင္လည္း ဆက္မေရးေတာ့သလို ၊
ဘာသာၿပန္ၿပီးေတာ့ေတာင္ မေရးေတာ့ပါဘူး။
က်ေနာ္ေဆြးေႏြးေပးမယ့္ အပိုင္းကေတာ့ Input/Output ရယ္ Redirect လုပ္တာရယ္စတဲ့ အပိုင္းေတြကို ေဆြးေႏြးေပးမွာပါ။ ဒီအပိုင္းကေတာ့ က်ေနာ္ သိပ္မသိလို႔ Internet ေပၚကေန ရွာေတြ႔ထားတာေတြကို ဘာသာၿပန္ထားတာပါ။ က်ေနာ္က
အဂၤလိပ္လို သိပ္မဖတ္တတ္လို႔ ဘာသာၿပန္တဲ့အခါမွာ ညံ့ခ်င္ညံ့ေနပါလိမ့္မယ္။
ခြင့္လႊတ္ေပးပါေနာ္။
System တစ္ခုဟာ ပံုမွန္အားၿဖင့္ေတာ့ Output ကို Screen ကေနထုတ္ၿပၿပီးေတာ့ ၊ Input ကိုေတာ့ Keyboard ကေနလက္ခံပါတယ္။ အဲလိုလုပ္တာဟာ လုပ္ရိုးလုပ္စဥ္ သိေနၾက ၿမင္ဖူးေနၾက လူတုိင္းသိတဲ့ လမ္းေဟာင္းၾကီးၿဖစ္တဲ့
အတြက္ က်ေနာ္တို႔ ပ်င္းရတာအမွန္ပါ။
အကယ္လို႔မ်ား Input တစ္ခုခုကို တၿခားတေနရာရာကေန လက္ခံၿပီးေတာ့ Output
ကိုလည္း တၿခားေနရာတစ္ခုခုကို သြားထုတ္ႏိုင္ရင္
ေပ်ာ္ဖို႔နည္းနည္းေကာင္းလာမွာေပါ့ေနာ္။ ဟုတ္တယ္ဟုတ္။
အဲလိုလုပ္ဖို႔လည္း နည္းလမ္းရိွပါသတဲ့။Output ကို Screen ေပၚသက္သက္တင္ၿပတာမဟုတ္ဘဲနဲ႔ တၿခားေနရာမွာ သြားရိွေနေစခ်င္ရင္ေတာ့ က်ေနာ္တုိ႔ဟာ Output Redirection Operator ၿဖစ္တဲ့
> ဆုိတာကို သံုးလို႔ရပါတယ္။
> ဆုိတာက ဘာလုပ္ေပးလည္းဆုိရင္ေတာ့ က်ေနာ္တို႔ Desktop ဒါမွမဟုတ္
တစ္ေနရာရာကို Print Screen ဖမ္းၿပီးေတာ့ Paint ထဲမွာ save လုပ္သလိုပါဘဲ။
သူကလည္း က်ေနာ္တုိ႔ ရဲ႕ bat program က ရလဒ္ေတြ အေၿဖေတြကို မွတ္ၿပီးေတာ့
text file တစ္ခုအေနနဲ႔ သိမ္းေပးတာပါ။
ဥပမာ တစ္ခုအေနနဲ႔ ေၿပာရမယ္ဆုိရင္ေတာ့….
အကယ္လို႔မ်ား က်ေနာ္တုိ႔ဟာ net ဆုိတဲ့ command အေၾကာင္းသိခ်င္လုိ႔ Command Prompt ထဲမွာ help ဆုိတာရိုက္ၿပီးေတာ့ ေမးလိုက္တယ္ဆုိပါစို႔။
အဲဒါဆုိရင္ေတာ့ ထြက္လာမယ့္ အေၿဖေတြက နည္းတာမဟုတ္တဲ့ အတြက္ေၾကာင့္ Screen
နဲ႔ လည္းမဆန္႔တာမ်ိဳး ၿဖစ္ႏုိင္သလို ၊ CommandPrompt က minimize
ၿဖစ္ေနရင္လည္း scroll ဆင္းသြားတာ တအားၿမန္လြန္းပါတယ္။ အဲဒါဆုိရင္
က်ေနာ္တုိ႔ အေနနဲ႔ လိုခ်င္တဲ့ အေၿဖကို ၿပန္ရွာတဲ့အခါ scroll bar
ကိုအေပၚတက္ေအာက္ဆင္းနဲ႔ အလုပ္ရႈပ္လြန္းပါတယ္။
အဲဒီ့ၿပႆနာမ်ိဳးကို ေၿဖရွင္းဖို႔ကေတာ့ Output Redirection ဆုိတဲ့ Operator
ေလးကို သံုးၿပီးေတာ့ ထြက္လာမယ့္ ရလဒ္ေတြကို text file ထဲမွာ သိမ္းလိုက္တာ
အဆင္အေၿပဆုံးပါဘဲ။
ေအာက္က help > help.txt ဆုိတဲ့ Code ေလးကို Command Prompt ကိုေခၚၿပီးေတာ့ ရိုက္ၾကည့္ပါ။
c:\ကိုယ္ေပးခ်င္တဲ့လမ္းေၾကာင္း > help > help.txt
အဲဒါဆုိရင္ေတာ့ က်ေနာ္တုိ႔ရိုက္လုိက္တဲ့ Command Prompt Screen ထဲမွာ ဘာမွက်လာမွာေတာ့မဟုတ္ေတာ့ေပမယ့္။ က်ေနာ္တို႔ ေရြးေပးခဲ့တဲ့ လမ္းေၾကာင္းေအာက္မွာ help.txt ဆိုတဲ့ text file ေလး ေရာက္ေနပါလိမ့္မယ္။
သူ႔ကို ဖြင့္ၾကည့္လိုက္ရင္ေတာ့ help ဆုိတဲ့ Command ကို
ရိုက္လုိက္ရင္ရလာမယ့္ အေၿဖေတြကို save လုပ္ေပးထားတာ ေတြ႔ရပါလိမ့္မယ္။ OK?
အဲ… တစ္ခုေတာ့ သတိေပးမယ္ေနာ္။ text file ရဲ႕ နာမည္ေပးရင္ အေရးၾကီးဖိုင္ေတြရဲ႕ နာမည္ေတြနဲ႔ သြားမထပ္ပါေစနဲ႔။
ဥပမာ က်ေနာ့္ဆီမွာ က်ေနာ့္ Password ေတြ သိမ္းတဲ့ password.txt ဆုိတဲ့ file ရိွတယ္ဆုိပါစို႔။ အဲဒီ့ password.txt ဆုိတဲ့ နာမည္နဲ႔ ခုနက help.txt
ဆိုတဲ့ေနရာမွာ ရိုက္ထည့္လိုက္ရင္ က်ေနာ္ သိမ္းထားတဲ့ Password
ေတြအားလုံးကို Overwrite လုပ္ပလိုက္ပါတယ္။
တုိတုိ နဲ႔ လြယ္လြယ္ ေၿပာရရင္ေတာ့ဗ်ာ အဲဒီ့ > ဆုိတဲ့ Operator ေလးက
file နာမည္တူေနတာ ေတြ႔ရင္ေတာင္မွ ဘာမေၿပာညာမေၿပာနဲ႔ ရိွၿပီးသား စာေတြကို
သူမွတ္ရမယ့္ အေၿဖနဲ႔ overwrite လုပ္လိုက္တယ္ဆုိတာပါ။ အကယ္လို႔မ်ား file
နာမည္အတူတူေပးမိခဲ့ရင္ေတာ့ ကိုယ့္အၿပစ္နဲ႔ကိုယ္ေနာ္။ က်ေနာ္ သတိေပးတယ္။
file နာမည္ တူတာမရိွရင္ေတာ့ ကိစၥမရိွပါဘူး။ သူ႔ဟာသူ အလုိလို create
လုပ္ေပးသြားလိမ့္မယ္။
ခုနက overwrite လုပ္တတ္တယ္လို႔ သတိေပးလိုက္တယ္ေနာ္။ ဒါေပမယ့္ အဲဒီ့ Overwrite လုပ္တာကို ေၿဖရွင္းဖုိ႔ နည္းတစ္ခုေတာ့ ရိွပါေသးတယ္။ ထပ္ၿဖည့္သြားတဲ့နည္းပါ။
အဲဒါကေတာ့ >> ဆုိတဲ့ Operator သံုးရမွာပါ။ က်ေနာ္တုိ႔ ခုနက
ဥပမာမွာဆုိရင္ေတာ့ help.txt ထဲကို help ရုိက္ရင္ထြက္လာမွာေတြ
သိမ္းထားၿပီးပါၿပီ။ အဲဒီ့ဟာေတြ အေနာက္မွာ ထပ္ၿဖည့္ခ်င္ရင္ေတာ့ ေအာက္က Code
ေလးနဲ႔ စမ္းၾကည့္လိုက္ပါ။
c:\ခုနက help.txt ရိွတဲ့လမ္းေၾကာင္း > net >> help.txt
Command Prompt ထဲမွာ အဲဒီ့လိုရုိက္လိုက္ရင္ေတာ့ က်ေနာ္တုိ႔ရဲ႕ ရိွၿပီးသား help.txt file ထဲမွာ net command ရဲ႕ အေၾကာင္းေလးကို ထပ္ၿဖည့္ၿပီးသားေတြ႔ရမွာပါ။ ရွင္းမယ္ထင္ပါတယ္ေနာ္။
အလြယ္နည္းမွတ္ထားဖို႔က >> ဆုိတာ ရိွၿပီးသား file တစ္ခုထဲကို စာထပ္ၿဖည့္တဲ့သေဘာပါ။
OK?
က်ေနာ္ ေၿပာရင္းေၿပာရင္းနဲ႔ bat file အေၾကာင္းကေန DOS ဘက္ႏြယ္သြားၿပီထင္တယ္။ အစကတည္းကလည္း Bat နဲ႔ DOS ဆုိတာ အတူတူပါဘဲ။ အဲဒီ့ေတာ့ က်ေနာ္လည္း ၿပည့္ၿပည့္စံုစံုေလး ေၿပာၿပခ်င္လုိ႔ Internet ေပၚမွာေမႊရင္းနဲ႔ ေတြ႔တာေတြ အကုန္ေပါင္းထည့္ၿပီးေတာ့ ဘာသာၿပန္ေပးလုိက္တာ။
ဟီး… အက်ိဳးေတာ့ရိွပါတယ္။ ဟုတ္တယ္ဟုတ္။
DOS ရဲ႕ Command ေတြ အေနနဲ႔ ခုနကလုိမ်ိဳး File ေတြဆီကိုသာ redirect လုပ္ေပးႏုိင္တာမဟုတ္ပါဘူး ၊ အမ်ိဳးမ်ိဳးေသာ Device ေတြဆီကိုလည္း redirect
လုပ္ေပးႏုိင္ပါေသးတယ္။ ေအာက္မွာ ဆက္ေလ့လာပါ။
Command အေနနဲ႔ ရုိက္ရမည့္ အမည္ Device အမည္
AUX Auxiliary Device (COM1)
CLOCK$ Real Time Clock
COMn Serial Port (COM1, COM2, Com3, COM4)
CON Console (Keyboard, Screen)
LPTn Parallel Port (LPT1, LPT2, LPT3)
NUL NUL Device (ဘာမွမရိွတာကို ဆုိလိုတာပါ)
PRN Printer
ဥပမာ အေနနဲ႔ ၾကည့္မယ္ဆုိရင္ေတာ့…. အကယ္္လို႔မ်ား က်ေနာ္တို႔ဟာ directory ရဲ႕ list ကို Print ထုတ္ခ်င္တယ္ဆုိရင္ ေအာက္က Command ကို သံုးလုိ႔ရပါတယ္။
c:\မိမိ ေရြးခ်ယ္ေသာ ႏွစ္သက္ရာ လမ္းေၾကာင္း>dir *.* > prn
အဲဒါဆုိရင္ စက္နဲ႔ ခ်ိတ္ဆက္ထားတဲ့ Printer ကေန Print ထုတ္ပါလိမ့္မယ္။ တၿခား Command ေတြလည္း သူတုိ႔နဲ႔ ဆုိင္ရာဆုိင္ရာ အလုပ္ကို လုပ္ၾကပါတယ္။
အဲဒီ့မွာ ခက္တာ တစ္ခုက NUL ဆုိတဲ့ Device ပါ။ က်ေနာ္ အစက သူ႔ကို ဘယ္နားမွာ သံုးရမယ္မွန္းမသိခဲ့ဘူးဗ်။
အဲဒါနဲ႔ ေဘာ္ဒါၾကီး ေဂၚဂယ္ ဆီသြားေမးေတာ့ ဒီလုိေလးေၿပာထားေလရဲ႕….
NUL Device ကိုေနာက္တစ္မ်ိဳးအေနနဲ႔ ‘bit bucket’ လုိ႔ေခၚပါသတဲ့။ သူ႔ကို Redirect လုပ္ခ်င္တဲ့ ဘယ္ေနရာမွာမွ သံုးေလ့မရိွပါဘူး။ ဒါေပမယ့္
လုပ္ခ်င္တဲ့ အလုပ္ၿပီးေၿမာက္ေၾကာင္း Message ၿပခ်င္တာမ်ိဳးမွာေတာ့
သံုးေလ့ရိွပါတယ္။ ဥပမာ… က်ေနာ္တို႔ File တစ္ဖိုင္ကို DOS မွာ COPY
လုပ္လုိက္တယ္ဆုိရင္ေတာ့ အလုပ္ၿပီးေၿမာက္ေၾကာင္းကို 1 file(s) coppied.
ဆုိၿပီးေတာ့ ၿပတတ္ပါတယ္။ အဲလိုမ်ိဳးကို Redirect လုပ္တဲ့ အခါမွာ
ၿပခ်င္တယ္ဆုိရင္ေတာ့….
C:\မိမိလမ္းေၾကာင္း > copy test.txt > NUL
အဲဒီ့ အေပၚက Code ေလးသံုးလိုက္ရင္ ရပါၿပီ။ အဲဒါဆုိရင္ေတာ့ က်ေနာ္တုိ႔ လိုခ်င္တဲ့ 1 file(s) coppied. ဆုိၿပီးေတာ့ ၿပပါလိမ့္မယ္။ OK?
ဒီေလာက္ဆုိရင္ေတာ့ က်ေနာ္တုိ႔ဟာ Output ကို Redirect လုပ္ၿခင္းနဲ႔ ပတ္သက္ၿပီး သိသြားပါၿပီ။ ေနာက္တစ္ခန္းမွာေတာ့ Input ကို Redirect လုပ္ၾကည့္ပါမယ္။
က်ေနာ္ေဆြးေႏြးေပးမယ့္ အေၾကာင္းအရာကေတာ့ Input ကို redirect လုပ္ၿခင္းပါ။
သူမွာ့လည္း က်ေနာ္တုိ႔ Output မွာတုန္းက လုပ္ခဲ့သလိုမ်ိဳးပါဘဲ Operator တစ္ခုရိွပါတယ္။ အဲဒါကေတာ့ ၿဖစ္ၿပီး အခု Input မွာေတာ့ < ပါ။
C တုိ႔ C++ တုိ႔နဲ႔ နည္းနည္းဘဲကြာတယ္ေနာ္။ ဟိုမွာက cout<> ေလ… သိပ္မလြဲပါဘူး။
Input Redirection Operator ကို ဘယ္လုိသံုးၾကလဲဆုိတာကေတာ့ ရွင္းပါတယ္ ၊
က်ေနာ္တုိ႔ text file မွာ ရိွတာေတြကို DOS ထဲေၿပာင္းထည့္တဲ့ အခါမ်ိဳးမွာ
သံုးၾကတာပါ။ Output တုန္းက DOS ကေန text file ဆီကို လႊဲၿပီးေတာ့ အခု Input
မွာေတာ့ text file ကေန DOS ကို လႊဲတဲ့သေဘာပါ။
သူ႔ကိုေတာ့ က်ေနာ္တုိ႔ဟာ Command တစ္ခ်ိဳ႕နဲ႔ တြဲသံုးေလ့ရိွပါတယ္။ အဲဒီ့ Command ေတြကေတာ့ MORE နဲ႔ TYPE ဘဲၿဖစ္ပါတယ္။
MORE ဆုိတာက က်ေနာ္တို႔ရဲ႕ Text File ထဲက စာသားေတြဟာ တအားရွည္တဲ့ အခါမ်ိဳးမွာ Screen တစ္ခ်ပ္စာကို တစ္ခါၿပေပးတဲ့ command ၿဖစ္ပါတယ္။ တနည္းအားၿဖင့္ Scroll ဆဲြရန္လိုတဲ့ စာသားေတြကို Screen Size ဆန္႔သေလာက္
တစ္ခါဆီၿပေပးတဲ့ command ပါ။ သူက Enter တစ္ခါေခါက္ရင္
တစ္လိုင္းဆင္းေပးပါတယ္။ (ေရးထားတာ ရႈပ္လုိ႔ နားလည္ပါ့မလားမသိဘူး)TYPE ဆုိတာကေတာ့ က်ေနာ္တုိ႔ရဲ႕ Text File ထဲက စာသားရိွသေလာက္ကို တစ္ခါတည္းနဲ႔ Scroll ဆြဲၿပီးၿပတဲ့ Command ပါ။ သူ႔ရဲ႕ Scroll လုပ္သြားတဲ့
speed က တအားၿမန္ေတာ့ ေအာက္ဆုံးေရာက္ၿပီးမွ အေပၚကို တစ္ခါ ၿပန္တက္ရရင္ ၊
စာတအားရွည္တဲ့ အခါမ်ိဳးမွာ အခက္ေတြ႔ႏုိင္ပါတယ္။ (ဒါေကာ နားလည္ရဲ႕လား။
နားမလည္ရင္ ၿပန္ေမးပါေနာ္။)
အဲဒီ့ Command ႏွစ္ခုရဲ႕ အဓိပၸါယ္ကို နားလည္ၾကတယ္ဆုိရင္ေတာ့ ၊ ဘယ္ Command က ကိုယ္နဲ႔ အသင့္ေတာ္ဆုံး ၿဖစ္မယ္။ အသံုးၿပဳမယ့္သူနဲ႔ အသင့္ေတာ္ဆုံး ၿဖစ္မယ္ဆုိတာ စဥ္းစားၿပီး သံုးၾကပါ။ (က်ေနာ္ကေတာ့ TYPE မွ
TYPE ဘဲ… More က enter ေခါက္ရတာ လက္ေညာင္းလို႔။ )
ဘာကြာသလဲဆုိတာ ေသခ်ာသိခ်င္ရင္ ေအာက္က Code ကို Command Prompt ထဲမွာ သြားရိုက္ၾကည့္လိုက္ပါ။
C:\မိမိ import (or) redirect လုပ္မယ့္ file ရိွသည့္လမ္းေၾကာင္း > MORE echo y | del *.*
အဲဒီ့ Code ကို ၾကည့္ရင္ေတာ့ နားလည္ၿပီထင္ပါတယ္။ echo နဲ႔ y ကို ရိုက္ထုတ္ပါတယ္။ အဲဒီ့အတြက္ y ဟာ အဲဒီ့ အခ်ိန္မွာ output တစ္ခုၿဖစ္ပါတယ္။
သူ႔ေနာက္မွာေတာ့ | ဆုိၿပီးေတာ့ Pipe Operator တစ္ခုသံုးထားပါတယ္။
အဲလိုသံုးထားတဲ့ အတြက္ က်ေနာ္တုိ႔ဟာ del တဲ့ Command ကလိုအပ္တဲ့ import
တစ္ခုၿဖစ္တဲ့ y ေနရာမွာ ခုနက ထြက္လာတဲ့ output ၿဖစ္တဲ့ y ကို
သံုးလိုက္ပါတယ္။OK? (ဟူး… ဒီေလာက္ ဆုိရင္ေတာ့ သေဘာေပါက္ၿပီထင္ပါတယ္။)
အခုေရးခဲ့တဲ့ နည္းေတြကေတာ့ Input Redirect လုပ္နည္းမ်ားၿဖစ္ပါတယ္။ ပံုမွန္လုပ္ေနၾကၿဖစ္တဲ့ Keyboard ကေန Input သြင္းတာထက္ ၊ မိမိရဲ႕ System
ထဲမွာဘဲ Input ကို လွည့္သံုးသြားတဲ့နည္းပါ။ လုပ္ရတာ
ေပ်ာ္ဖို႔ေကာင္းတယ္ေနာ္။ (အခု စာဖတ္သူေတာ့ ေပ်ာ္မေပ်ာ္မသိဘူး။
က်ေနာ့္အတြက္ေတာ့ ဒါေတြ ေလ့လာခဲ့ရတဲ့ အခ်ိန္ဟာ ေပ်ာ္ဖို႔ အေကာင္းဆုံးပါဘဲ။
ဘာမွန္းမသိဘဲနဲ႔ Screen မဲမဲၾကီးမွာ စာေတြ က်လာတာကို ေပ်ာ္ခဲ့တာေလ။
အခုေတာ့ ပ်က္ဆီးေနၿပီ… ဘာမွလုပ္ခ်င္စိတ္ ၊ ေလ့လာခ်င္စိတ္မရိွဘူးၿဖစ္ေနတယ္။)
Batch File Programming က တကယ္ေလ့လာရင္ အရမ္းကို လြယ္တဲ့ဟာတစ္ခုပါ။ ၿပီးေတာ့ သံုးတတ္ရင္ သံုးတတ္သလို အက်ိဳးလည္းရိွၿပီးေတာ့ ၊ သံုးရတာလည္း
တကယ္ ေပ်ာ္ဖို႔ ေကာင္းပါတယ္။ သူ႔ကိုေလ့လာခ်င္တယ္ ဆုိရင္လည္း တၿခားဟာေတြလို
မ်ားမ်ားစားစား knowledge ရိွစရာမလိုပါဘူး။ DOS Command ေတြကို
နည္းနည္းပါးပါး အကြ်မ္းတ၀င္ရိွတယ္ဆုိရင္ဘဲ လုပ္စားလို႔ရေနၿပီ။
DOS Command ေတြနဲ႔ ပါတ္သက္လို႔ ေလ့လာလို႔ရတဲ့ site ေတြ
အမ်ားၾကီးရွိပါတယ္။ အဲဒီ့မွာေလ့လာပါ ၊ ဖတ္ပါ ၊ မွတ္ပါ ၊ သင္ယူပါ ၊
ကိုယ္တုိင္လုပ္ၾကည့္ပါ။ အဲလို site ေတြမွာ တစ္ခါတစ္ေလဆုိရင္ DOS ရဲ႕
Hidden Command ေတြလည္း မေရမတြက္ႏုိင္ေအာင္ရွိေနတတ္ပါတယ္။
အဲလိုလုပ္ၿပီးေတာ့ ေလ့လာလုိက္မယ္ဆုိရင္ Batch File Programming မွာ
ဆရာတစ္ဆူၿဖစ္လာႏုိင္တယ္။
အေပၚမွာေရးခဲ့ဖူးတုန္းကလုိဘဲ ဆရာတစ္ဆူၿဖစ္ရင္ ဘာလုပ္လို႔ရလဲေတာ့
မေမးၾကနဲ႔ေနာ္။ က်ေနာ္လည္း Bat ကို အိတ္စပါတ္ မဟုတ္သလို စပယ္ရွယ္လစ္
လဲဟုတ္ဘူး။ ဘာလုပ္လုိ႔ရလဲဆုိတာလည္း ကိုယ့္ေပၚဘဲမူတည္တယ္ေနာ္။ က်ေနာ္
ေၿပာတာ ၂ ခါရိွၿပီ… ထပ္ေမးၾကနဲ႔ )
ဒီေန႔ေတာ့ ဒီေလာက္ဘဲေနာ္။ ေနာက္တစ္ခါ ဘာေရးရမယ္မွန္းက ခုထိမသိေသးလို႔ ၊