Thursday, June 2, 2011

Batch File သင္ခန္းစာ (၉)

Bat files အေၾကာင္းကုိ သိခ်င္ ေလ႕လာခ်င္တဲ႕ သူငယ္ခ်င္းမ်ားအတြက္ ကုိယ္တုိင္းေရးမဟုတ္ေပမဲ႕ ကၽြန္ေတာ္ကုိယ္တုိင္ မသိခင္က စေလ႕လာမိခဲ႕တဲ႕ ဆုိဒ္မွ မွတ္စုအေနနဲ႕ ကူးထားခဲ႕တာေလးပါ။ အဲ႕ဒီဆုိဒ္ကုိ ညြန္းခ်င္ေပမဲ႕လည္ လက္ရွိ ဆုိဒ္လိပ္စာကလည္ မေတြ႕ေတာ႕တာေၾကာင္႔ စာေရးသားသူအေနနဲ႕ နားလည္ေပးမယ္လုိ႕ ယုံၾကည္ပါတယ္။ ဒီသင္ခန္းစာကုိ ကၽြန္ေတာ္ ကုိယ္တုိင္း ေရးသားထားတာ မဟုတ္တာကုိေတာ႕ ရုိးသားစြာ ၀န္ခံပါတယ္။ ဒါေၾကာင္႔ မသိမနားလည္ရင္ေတာ႕ ေမးျမန္းႏုိင္ပါတယ္။ အကၽြမ္းက်င္ဆုံး အဆင္႔ မဟုတ္ေပမဲ႕ တက္ႏုိင္သမွ် ရွင္းျပေပးပါမည္။ မႈရင္း အေရးအသား အတုိင္း မျပင္ မျဖည္႔စြတ္ဘဲ တင္ျပလုိက္ပါတယ္။

ဒီေန႔ က်ေနာ္ေဆြးေႏြးေပးမယ့္ အပိုင္းကေတာ့ 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 လုပ္ၾကည့္ပါမယ္။

written by SYKO

No comments:

Post a Comment

စဥ္းစားမႈမပါဘဲ သင္ယူေသာ ပညာသည္ အခ်ည္းႏွီးျဖစ္၍ ၊ ပညာမရွိဘဲ စဥ္းစားျခင္းကား အလြန္ အႏၱရာယ္ၾကီးေပသည္။ (ကြန္ျဖဴးရွပ္)

 

Recent Post

Random Post