วันศุกร์ที่ 23 กุมภาพันธ์ พ.ศ. 2561

ปูพื้นฐาน Batch File และการแสดงผลภาษาไทย Windows 10

ปูพื้นฐานก่อนเขียน Batch Files
ใช้คอมมาถึงยุคปัจจุบัน...ก็ร่วม 20 ปี... "Disk Operating System หรือ DOS" มันได้สูญพันธ์ไปแล้วจริงหรือ คำตอบออกมาจากหัว "เสียงดังมาก" ว่า "ไม่ใช่!" แต่ในความเป็นจริงของโลกยุคปัจจุบัน "ใช่แล้วปู่!" สังเกตได้จากแผ่น "ดิสก์เก็ต 5 นิ้ว มันตายไปกับไดโนเสาร์แล้ว พร้อมๆ กับแผ่น 3 นิ้ว มันก็จะสูญพันธ์ไปพร้อม ช้างแมมมอส และที่กำลังจะสูญพันธ์ตามไปคือแผ่น CD-ROM อีกไม่นาน(เพราะไดร์ฟมันไม่มีแล้ว)" และเราใช้อะไรบูตเครื่องแทน DOS กัน คำตอบคือ ถ้า ระบบปฏิบัติการวินโดวส์เอง คือ "แกนวินโดวส์; Kernal" (ยังไม่ขอพูดถึงระบบมัน) ตัวของวินโดวส์ตั้งแต่ยุค 98 จนถึง Me เวลาซ่อมเครื่องยังต้องอาศัยแผ่น StartUp ซึ่งนั้นแหละคือระบบปฏิบัติการ DOS ย่อส่วน (แค่นั้นมันก็รวมคำสั่ง DOS ไว้เกือบครึ่ง) จนมาถึง XP ระบบการสร้าง Start Up Disk ได้หายไปพร้อมกับ ระบบที่ ไม่ต้องการ Command.com, IO.SYS, MS-DOS.SYS อีกต่อไป (และทำไมมันยังอยู่ในไดร์ฟระบบเช่น C:\>) มันเหลือแค่มีไว้ประดับบารมีของ XP ครับ... บูตจริงๆ มันบูตไม่ขึ้น... เพราะระบบของ XP ที่ Root Folder มีแฟ้มหลักๆ คือ boot.ini, NTDETECT.COM, ntldr ซึ่งแฟ้มเหล่านี้... XP จะขาดไม่ได้...มีผลทำให้เครื่องบูตติด Error ได้ครับ...มาถึงระบบ Windows 7 เองการบูตเองก็ไม่ได้พึ่งพาไอ้แฟ้มที่กล่าวมาข้างต้นเช่นกัน...มันโยนภาระให้โฟลเดอร์ BootMgr, และ Reseved พาร์ทิชั่น จัดการ...ตัวระบบลึกๆ ผู้เขียนยังทราบรายละเอียดมากนัก แต่ที่แน่แท้คือ "ดอส มันสูญพันธ์ไปแล้ว" ยังคงเหลือไว้ใน "แผ่นอรรถประโยนช์" อย่าง "Hiren Boot" ให้ทดลองเล่นกันได้ถึง แผ่นรุ่นที่ 11 ลงมา ยุคที่การซ่อมเครื่องหรือลงระบบปฏิบัติการผ่าน Windows PE หรือ Mini XP หรือ Mini Windows 7 ทำไมต้องลงโปรแกรมผ่านระบบพวกนี้...คำตอบแบบกระแทกใจอย่างแรงคือ "มันไม่ต้องถามหาไดร์ฟเวอร์หรือโปรแกรมควบคุมอุปกรณ์ภายในคอมพิวเตอร์... ที่ไม่รู้จะมีตับไตใส้พุงอะไร ดอสมันถามหมด...แถมหาไม่เจอ...ระบบพวกนี้เขาจัดการไว้หมดแล้ว" เป็นคำตอบเดียวที่รู้อยู่ว่า...ปู่ก็ไม่ชิน แต่ปู่ต้องเต๊ะปีบดังๆ ด้วยการ Ghost ผ่านระบบพวกนี้...หรือ Restore Windows 7 หรือ Windows 8 ด้วยระบบพวกนี้...นะปู่...สก๊อยขอบอก...เร็วด้วย...แรงด้วย...เหมือนพี่แว้น...อาว...ทีนี้... โปรแกรมยุค DOS และโปรแกรมทางธุรกิจที่ผมซื้อลิขสิทธ์บน DOS เมื่อ 10 ปีที่แล้ว...ตัวละหลายๆ พันละ...จะทำยังไง...ผมต้องลงทุนอีกหรือ... คำตอบที่ดังในหัวอย่างแรกเหมือนใครสาปแช่งคือ "ใช่!" แต่ยังมีเสียงสวรรค์ของนางฟ้าหน้าจอคอมพิวเตอร์พูดว่า ลองใช้ DOSBox ดูซิ" ปู่ยิ้มแก้มปลิ...เหอๆ มีสวรรค์ชั้นเจ็ดมีจริงด้วย...แต่ผมตอบนางฟ้าไปว่า "นางฟ้า...มันฟรีไหม" นางฟ้าตอบอย่างอายและมองค้อนทีนึงพร้อมพูดว่า "จะขึ้นสวรรค์...จ่ายเป็นเงิน Bitcoin นะปู่รู้จักหรือเปล่า" มรดก...อย่างเดียวที่ DOS ยังเหลือมาให้คือ Batch files แบตช์ไฟล์คืออะไร...ผู้เขียนจะค่อยๆ ทยอยสอน...ให้เพื่อความเป็น "ปู่โสมเฝ้า แบตช์ไฟล์" ตัวจริง...

Batch File คืออะไร
แบตช์ไฟล์คือ คำสั่งของระบบในรูปแบบสคริป (Script Language) เทียบเท่ากับภาษาคอมพิวเตอร์อีกภาษาหนึ่ง...ซึ่งมีมาตั้งแต่ยุค DOS ซึ่งในปัจจุบันการมันทำงาน ผ่าน CMD.EXE ในรูปแบบ "เพนเท็กซ์" ผ่าน "สคริปคำสั่ง" แบตช์ไฟล์ประกอบด้วยนามสกุล ".CMD; ComManD และ .BAT; BATch" เขียนด้วยโปรแกรมแก้ไข ข้อความด้วยเทกช์อิดิตเตอร์ หรือ โปรแกรมเวิร์ดโปรเซสซิ่งทุกรูปแบบแต่ต้องบันทึกให้อยู่ในรูปแบบของ "Unicode; ยูนิโค้ด" แบบ "ASCII Text; แอสกี้เท็กซ์" ถ้าบันทึกอยู่ในยูนิโค้ดอื่นหรือรูปแบบอื่น อาจมีปัญหาตอนเรียกใช้คำสั่งซึ่ง CMD.EXE หรือ COMMAND.COM ไม่เข้าใจรูปแบบข้อมูลการทดสอบแบตช์ไฟล์ให้ไปที่ Start...Run...พิมพ์ CMD และ Enter ส่วนวินโดวส์เซเว่นให้พิมพ์ที่ ช่อง Search ว่า CMD และ Enter ในคำสั่ง DOS ซึ่งเป็นคำสั่งของตัวแบตช์ไฟล์เองนั้นมีอยู่ 2 ประเภทคือ 1. คำสั่งภายใน (Internal Command) 2. คำสั่งภายนอก (External Command) ให้ลองเข้าสู่ CMD และพิมพ์ตามนี้ C:\>help
จะปรากฎชุดคำสั่งของ Command Line
ASSOC, AT, ATTRIB, BREAK, CACLS, CALL, CD, CHCP, CHDIR, CHKDSK, CHKNTFS, CLS, CMD, COLOR, COMP, COMPACT, CONVERT, COPY, DATE, DEL, DIR, DISKCOMP, DISKCOPY, DOSKEY, ECHO, ENDLOCAL, ERASE, EXIT, FC, FIND, FINDSTR, FOR, FORMAT, FTYPE, GOTO, GRAFTABL, IF, LABEL, MD, MKDIR, MODE, MORE, MOVE, PATH, PAUSE, POPD, PRINT, PROMPT, PUSHD, RD, RECOVER, REM, REN, RENAME, REPLACE, RMDIR, SET, SETLOCAL, SHIFT, SORT, START, SUBST, TIME, TITLE, TREE, TYPE, VER, VERIFY, VOL, XCOPY
ด้านบนคือคำสั่งในที่ใช้งานในแบตช์ไฟล์ทั่วๆ ไป "จะเรียกว่าคำสั่งภายในก็ได้" แต่คำสั่งเหล่านี้ในวินโดวส์บางรุ่นรวมไปถึง DOS เองจะถือเป็นคำสั่งภายนอกเพราะ "มันมีนามสกุล .EXE" เก็บไว้ที่พาทระบบเช่น DOS จะเก็บที่ \DOS ส่วน วินโดวส์เอกซ์พี จะเก็บที่ %Windir%\System32 จึงไม่อาจนิยามออกมาเป็นเอกเทศได้ ในอนาคตคำสั่งเหล่านี้...อาจถูกเก็บรวบร่วมไว้ภายใน CMD.EXE ทั้งหมด และอาจจะมีบางตัวที่ไม่จำเป็นต้องใช้งานถูกตัดออกไปเช่นกัน

การแสดงผลภาษาไทย

การแสดงผลภาษาไทยนั้น...ในตัว Console เองทำได้ไม่สะดวกนัก...เพราะตัวระบบของ DOS บนระบบ (GUI; Graphic User Interface) ไม่นิยมที่จะใช้งานแค่แป้นพิมพ์และคีย์บอร์ดแต่สามารถปรับฟอนต์ของการแสดงผลใน CMD.EXE ใน Propreties...Fonts เพื่อเลือก TrueType Font ที่มีชุดอักขระภาษาไทย และถูกติดตั้งอย่างถูกวิธีเท่านั้นถึงสามารถทำงานได้ ผู้เขียนจึงเลี่ยงการแสดงผลของคำสั่งแบตช์ไฟล์ที่พอจะทำได้คือ ใช้คำสั่ง
MSG %username% "ข้อความ"
ซึ่งมันแสดงผลออกมานอกคอนโซลแล้ว...อีกวิธีคือ
TITLE "หัวข้อภาษาไทย"

ในยุควินโดวส์ 10 การแสดงภาษาไทย...

การแสดงผลในภาษาไทยบน CMD ปัจจุบันทำได้แล้ว...และดีพอสมควร...หากจะบอกให้ท่านคลิกนู่นนี่นั้น...คงลำบากแน่ถ้ามือใหม่...แต่ยังไงก็ต้องคลิก ตอนสุดท้ายเพื่อเลือก ให้ Font ภาษาไทยอยู่ดี...แต่ผมมีสคริปคำสั่งเพื่อหย่น ระยะเวลาในการคำงานดังนี้
Download Batch File เพื่อติดตั้งภาษาไทยตามขั้นตอน
สำหรับบล็อกนี้จากนี้จะสอนแบตช์ไฟล์ขั้นสูงขึ้นไปในยุค วินโดวส์ 10 ที่ Batch File มันได้กลายเป็นสคริปแบบ "ไฮบริด" ไม่ว่าจะเป็นลูกผสม Java หรือ Power shell สคริปส่วนใหญ่ได้มาจาก Github แต่จะมานำเสนอแบบที่คนไทยเข้าใจอีกที อีกอย่างที่น่าสนใจคือ ตั้งแต่วินโดวส์ 7 เป็นต้นมา (ดูโค้ดได้จากโปรแกรม ติดตั้งภาษาไทย) สามารถ บรรจุแฟ้ม อะไรก็ได้ใส่ไปใน Batch File เลย...(อืม...ไวรัสซะเป็นไง) แต่ผู้เขียน Open Source ให้ดูว่าไม่มีเจตนาใดแอบแฝง...จากโค้ดตัวอย่างคำสั่ง CertUtil มันสามารถสร้าง BASE64 คือ รหัสที่แทนค่า ASCII ได้ 4:3 กล่าวคือ BASEุุ64 สี่ตัว แทน ASCII ได้ 3 ตัวในทุกๆ ค่า ในอนาคต คำสั่งนี้สามารถบรรจุ โปรแกรมแอบแฝง มาใน Batch File ได้โดยง่าย...จึงต้องศึกษาให้ดี อีกอย่างเทคนิคที่ได้จาก Github เอง ก็ทำให้ Batch File เอง สามารถเข้ารหัสตัวมันเองแบบ Notepad อ่านไม่ออก และ ทดสอบใน เวิร์ด และ Notepad++ ก็อ่านไม่ออก แต่มันทำงานได้เหมือนเดิม...เอาไว้จะมาสอน...ติดตามกันให้ดีๆ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

โปรแกรมฟรีๆ สำหรับผู้เริ่มต้นธุรกิจ

Software ราคาถูก สำหรับผู้เริ่มต้นธุรกิจ สวัสดีครับ...ผมนายธนัตถ์เดชน์   บุญลือลักษณ์ (Tanutdech  Boonluelak) เป็นผู้เขียนและพัฒนาซอฟต์แ...