วันอังคารที่ 25 มิถุนายน พ.ศ. 2556

ปูพื้นฐาน(ขั้นเทพ) Batch File ตอน 3

การสร้างเมนูพลูดาวน์ (Pull Down Menu form Batch File)?
ดูจากภาพจะเห็นว่า...มันมีสีใน CMD หรือกำหนดสีใน Batch File ได้ด้วย ความเป็นจริงทำได้...แต่ต้องอาศัยตัวช่วยหน่อยคือ colormsg.com ส่วนการรับคีย์แบบ Pull down นั้นต้องอาศัย getkey.com ซึ่งทั้งสองไฟล์นี้สามารถถูกสร้างขึ้นด้วย DeBug Script ได้ ซึ่งผู้เขียนศึกษาเทคนิคเหล่านี้มานาน...เลยประยุกต์รวมให้ผู้อ่านเองสามารถนำไปเขียนเป็นโปรแกรมที่ทำงานอย่างสวยงามได้
ตัวอย่างโปรแกรม
@echo off
rem สร้างคำสั่ง conlormsg.com เพื่อให้ CMD สามารถกำหนดสีได้
(  echo e100
   echo 0F B6 0E 80 00 E3 4F BF 81 00 B0 20 FC F3 AE 74
   echo e110
   echo 45 E3 43 8A 45 FF E8 43 00 80 3D 20 74 0E C0 E0
   echo e120
   echo 04 8A E0 8A 05 E8 34 00 0A C4 47 49 E3 28 32 E4
   echo e130
   echo 50 B0 22 F2 AE 75 1F E3 1D 8B F7 8B D1 F2 AE 75
   echo e140
   echo 01 41 2B D1 74 10 8B CA 5B B0 20 B4 09 CD 10 AC
   echo e150
   echo B4 0E CD 10 E2 F9 32 C0 B4 4C CD 21 3C 61 72 02
   echo e160
   echo 2C 20 3C 41 72 02 2C 07 2C 30 C3
   echo rcx
   echo 6b
   echo w
   echo q
) | debug colormsg.com

rem สร้างคำสั่ง getkey.com เพื่อให้ รับคีย์แบบเมนูได้
( echo n getkey.com
  echo a 100
  echo mov ah,00
  echo int 16h
  echo mov al,ah
  echo mov ah,4c
  echo int 21
  echo ret
  echo.
  echo rcx
  echo 0A
  echo w
  echo q
) | debug.exe getkey.com

set /a a=1
:MainMenu
color E
cls
echo ##################################################
echo #####   ###  #####       ##     ## ##### ##     ##
echo #### ###### # ####### ##### ####### ### ### ######
echo ### ####### ## ###### ##### ######## # #### ######
echo ### ####### ### ##### #####    ###### #####    ###
echo #### ### ##      #### ##### ######### ##### ######
echo #####   ### ##### ### #####     ##### #####     ##
echo ##################################################
echo. & if %a% == 1 (colormsg bf "    Menu 1    ") else (colormsg 06 "    Menu 1    ")
echo. & if %a% == 2 (colormsg bf "    Menu 2    ") else (colormsg 06 "    Menu 2    ")
echo. & if %a% == 3 (colormsg bf "    Menu 3    ") else (colormsg 06 "    Menu 3    ")
echo. & if %a% == 4 (colormsg bf "    Menu 4    ") else (colormsg 06 "    Menu 4    ")
echo.
echo.
echo Press Airrow Key and Enter or Esc to Quit
getkey.com
if %errorlevel%==1 goto :EscapeKey
if %errorlevel% == 28 goto :EnterKey
if %errorlevel% == 72 goto :Up
if %errorlevel% == 75 goto :Left
if %errorlevel% == 77 goto :Right
if %errorlevel% == 80 goto :Down
goto :MainMenu

:Down
:Right
set /a a=%a%+1
rem %a% == จำนวนบรรทัดเมนู + 1 set /a=1
if %a% == 5 set /a a=1
goto :MainMenu

:Up
:Left
set /a a=%a%-1
rem %a% == 0 set /a a=จำนวนบรรทัดเมนู
if %a% == 0 set /a a=4
goto :MainMenu

:EnterKey
rem เรียกโปรแกรมตามเมนูที่ต้องการด้วย call :Program
if %a%==1 call :Menu1
if %a%==2 call :Menu2
if %a%==3 call :Menu3
if %a%==4 call :Menu4
goto :MainMenu

rem เพิ่มคำสั่งตามโปรแกรมที่ต้องการทำงานดังตัวอย่างปิดท้าย goto :EOF
:Menu1
echo Menu 1
pause
goto :EOF

:Menu2
echo Menu 2
pause
goto :EOF

:Menu3
echo Menu 3
pause
goto :EOF

:Menu4
echo Menu 4
pause
goto :EOF

:EscapeKey
del getkey.com
del colormsg.com
set a=
color

มันทำงานอย่างไร?
หลักการเขียนโปรกรมดังนี้
0. เพิ่มโมดูลบรรทัดสีเขียว
1. ต้องเปลี่ยนบรรทัดสีแดง 
1.1 เพิ่มเมนูเข้ามาทีละบรรทัดตามตัวอย่าง สีให้เป็นค่าฐานสิบหก ส่วนข้อความต้องมีเครื่องหมายคำพูด
1.2 ตัวแปร a ในบรรทัดถัดไปต้องเป็นจำนวนบรรทัดเมนูตามที่ระบุ...เพื่่อให้แบตช์ไฟล์สามารถนำไปคำนวนหาตำแหน่งในการเปลี่ยนเมนู
2. ต้องเพิ่มคำสั่งในบรรทัดสีเหลืองคือเมนูที่ต้องการเรียกใช้งานและโปรแกรมที่จะเรียกใช้งาน
3. ต้องเพิ่มโปรแกรมที่ต้ืองการทำงานตามบรรทัดสีชมพูเพื่อให้เมนูทำงานได้สมบรูณ์ใ้ห้สร้างตำแหน่งและปิดท้าย goto :EOF ทุกครั้งเสมอ

หลักการทำงาน
0. โมดูลคำสั่งจะถูกสร้างทุกๆ ครั้งที่เรียกใช้งาน
1. บรรทัดสีแดงจะคำนวนและเคลื่อนไหวเมนู
2. บรรทัดสีเหลืองจะทำการรับตัวแปรหลังกด Enter มาคำนวนเพื่อแยกการทำงาน
3. บรรทัดสีชมพูคือส่วนของคำสั่งที่จะให้แบตซ์ไฟล์ทำงานอย่างแท้จริง

ตัวอย่างเมนูภาษาไทย?



ลองนำไปประยุกต์ใช้งานให้ Batch File คุณสวยขึ้น?
ลองดูนะครับ...ปรับเทคนิคเป็นของท่านเอง...และเขียน Batch File ให้สวยขึ้นและลองโพสต์มาอวดกัน
ส่วนคราวหน้า...จะซ่อนคำสั่งที่เป็นลิขสิทธิ์ของท่านใส่โปรแกรม Convert Batch File to EXE เพื่อให้เป็นความลับ...และ Batch File จะถูกเขียนขึ้นเป็นโปรแกรมที่มีเอกลักษณ์เสียที

1 ความคิดเห็น:

  1. ไม่ทราบว่าเจ้าของบล็อคยังอยู่ไมครับ อยากให้เขียน แบบฉบับ ที่ไม่มีคำแนะนำให้ดูหน่อยอะครับ

    ตอบลบ