ข้ามไปที่เนื้อหาหลัก

ปูพื้นฐาน 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++ ก็อ่านไม่ออก แต่มันทำงานได้เหมือนเดิม...เอาไว้จะมาสอน...ติดตามกันให้ดีๆ

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

รวมโปรแกรมทั้งหมดของ CatEye

ผม ธนัตถ์เดชน์   บุญลือลักษณ์ผู้เขียนและพัฒนาโปรแกรมบน Excel มาร่วมกว่า 3 ปี... โดยช่วงแรกๆ หลักจะให้ผู้ใช้งานได้โปรแกรมราคาถูก หรือ ฟรีไปเลย...แต่จากที่ผ่านมาเมื่อแจกโปรแกรมฟรีแล้วนั้น จะมีผู้แอบอ้างหรือผู้ที่อยากได้ Source Code ไปขายต่อหรือพัฒนาเพื่อการค้า ผมจึงเล่งเห็นว่า...ถ้าเป็นเช่นนั้น ผมจะคิดค่าใช้จ่ายสำหรับธุรกิจการค้าครับ...เพราะพวกคุณมีรายได้แต่ยังอาศัยช่องทางที่ผิดในการทำมาหากินอยู่...(ไม่ได้ Anti พวกใช้ Software เถื่อนนะครับ) บางครั้งธุรกิจต้องดำเนินอย่างถูกต้อง...ถ้ายังเริ่มต้นและยังไม่มีทุนคงไม่มีใครว่า...ที่จะขอแค่ใช้ไปก่อน แต่ถ้าเมื่อไหร่มีรายได้...ยังไงก็ขอให้ใช้โปรแกรมลิขสิทธ์ นะครับ ในบางกรณีเช่นนักศึกษาที่พัฒนาโปรเจ็คจบหรือ อาศัยฐานความรู้ของ โปรแกรมผมเพื่อการศึกษา จะยกเว้นเป็นกรณีพิเศษ ครับ...ไม่มีค่าใช้จ่าย...แต่ต้องลงทะเบียนและขอภาพบัตรนักศึกษามายืนยันนิดนึง...ลิขสิทธิ์จะยกเว้นสำหรับองค์ความรู้ของนักเรียนนักศึกษาครับเป็นไปตามระบบสากล

ภายใต้หน้ากากแมว จากผู้หลงผิดและคิดว่าตัวเองเป็นศูนย์กลางจักรวาล...ผมเองเคยผ่านเรื่องที่เลวๆ เช่นการทดสอบและปล่อยไวรัสใน Macro เมื่…

กำเนิดไวรัสคอมพิวเตอร์

(Lady Augusta Ada Byron, Coutress of Lovelace ) โปรแกรมเมอร์คนแรกของโลกเธอบรรจงถักทอผ้าผ่านโปรแกรมคำสั่งคอมพิวเตอร์ด้วยลายผ้าอันวิจิตรงดงาม...คงนึกไม่ถึงว่า...ลายผ้าสมัยนี้...จะน่ากลัวสักเพียงใดหากไวรัสคอมพิวเตอร์ปรากฎอยู่บนพื้นผ้าของเธอในสมัยนั้นด้วย

2488: วันหนึ่ง Rear Admiral Grace Murray Hopper พยายามสั่งให้คอมพิวเตอร์ทำงาน แต่ทำยังไงมันก็ไม่ยอมทำงาน เธอจึงเข้าไปดูในฮาร์ดแวร์(สมัยนั้นคอมพิวเตอร์มีขนาดใหญ่มาก เกือบเท่าห้องๆ หนึ่ง) ก็เจอผีเสื้อกลางคืนติดอยู่ในนั้น ซึ่งเธอเรียกมันว่า "Bug" ซึ่งคำนี้ได้ใช้กันมาจนถึงปลายศตวรรษที่ 19 ซึ่งหมายถึงปัญหาที่เกิดขึ้นกับอุปกรณ์อิเล็คโทรนิคต่างๆ Murray Hopper ก็ยังได้สร้างคำขึ้นมาใหม่อีกคำหนึ่งคือ "Debugging" ซึ่งได้อธิบายถึงความพยายามที่จะแก้ปัญหาที่เกิดขึ้นกับคอมพิวเตอร์

2492:  นักวิทยาศาสตร์ชาว Hungarian ที่ชื่อว่า John von Neumann ได้คิดค้นทฤษฎีของโปรแกรมที่สามารถทำซ้ำตัวเองได้ ซึ่งพื้นฐานของโปรแกรมนี้เกี่ยวกับการใช้หน่วยความจำของเครื่องนั่นเอง ในหนังสือชื่อ "Therory and Organization of Complicated Automata"
 (ลัก…