วันพฤหัสบดีที่ 6 มิถุนายน พ.ศ. 2556

การใช้เว็บเป็นเครื่องมือแสดงผลภาษาไทย Batch File ตอน 2


เทคนิคขั้นเทพลำดับต่อไป...

     บางครั้งคุณไม่รู้จะเขียนแบตซ์ไฟล์เพื่อให้เรียกภาษาไทยยังไง (โดยไม่ต้องยุ่งกับการ Setup Font True Type ภาษาไทยที่ลองรับ DOS) และต้องคลิกนู่นคลิกนี่ ซึ่งผู้ใช้งานบางครั้งผู้ใช้บางคนอาจทำไม่เป็น หรือยุ่งยากในการลำดับเหตุการณ์ใส่คู่มืออีก “ผมแนะนำว่า”
 ข้อเสียที่สำคัญสุดของ Ture Type ภาษาไทยคือ มันสระกระโดด...ใน DOS และอ่านแทบไม่รู้เรื่อง อีกอย่างการแสดงแสง สี เสียง ทำไม่ได้เต็มที่อย่างที่ตั้งใจ และคุณจะดันทุรัง นำภาษาไทยไปใส่ Console ทำไม?
การแสดงผล Batch File ด้วยภาษาไทยบนวินโดวส์...ทางเลือกอื่นคือ?
    1. แสดงผลผ่าน Notepad เอาดื่อๆ และเรียกมันผ่านคำสั่ง Start เช่น
Echo ทดสอบข้อความ>readme.txt
Echo บรรทัดต่อมา...>>readme.txt
Start readme.txt
ซึ่งในวิธีนี้เองมันง่ายก็จริง...แต่ไม่สามารถรับหรือตอบรับหน้าจอกับผู้ใช้งานได้ อย่างเช่น รับการกด Yes No หรือ การพิมพ์ “Password” ซึ่ง Notepad ทำไม่ได้อยู่แล้ว
    2. สร้างหน้าเว็บผ่าน Batch File และรอให้มันเรียก Batch File อีกครั้งผ่าน Evens ของ JAVA เพียงเล็กน้อย ทำให้สามารถแสดง ทั้งภาพ เสียง ลิงค์ หรือแม้แต่ปุ่มต่างๆ และโยนภาระให้ JAVA จัดการแค่เหตุการณ์เท่านั้นส่วนคำสั่งเชิงลึก...หรือคำสั่งที่คุณมีความรู้เกี่ยวกับแบตซ์ไฟล์เชิงเทคนิค ให้ JAVA เรียก Batch File ตัวเดิมที่สร้างหน้าเว็บนี้แหละ

และทำไมไม่เขียนด้วย JAVA ทั้งหมดซะ?
คำตอบคือ ใช่มันดีกว่า เหตุผลคือ แต่มันจะง่ายกว่าไหม ถ้าเขียนคำสั่ง DOS ที่รันบนวินโดวส์ทุกรุ่นโดยไม่ต้องคำนึงถึงเรื่องการสื่อสาร...แต่แค่เขียนเครื่องมือช่วยเหลืองานด้านวินโดวส์ เช่นรวบรวมคำสั่ง .BAT หรือ .CMD ที่เป็นการปรับแต่ง Registry ทั้งหมดไว้แล้วแต่ต้องนำ Code ทั้งหมดไปเขียนหรือ Compile  ใหม่บน JAVA โอย...ไม่ง่ายเลย สู้นำ Batch File ตัวเดิม...มาบรรจุ HTML ง่ายกว่าเยอะ

และมันจะทำงานได้เหรอถ้าไม่ต่อเน็ต?
    คำตอบคือ ได้ แต่ คำสั่งที่มีการลิงค์ไปยังเว็บไซต์เท่านั้นที่ไม่ทำงาน เหตุผลที่ดีกว่าคือ การนำ Batch File ทั้งชุดไปเขียนใน Programs Application นั้นยุ่งยากกว่ามากหากคุณมีคำสั่ง Batch File หลายๆ คำสั่ง และต้องสร้างปุ่มคำสั่งบน Application นั้น อย่างเช่น VB6 ไหนคุณต้องสร้างปุ่ม ระบุชื่อปุ่มบรรจุโค้ด และสร้างคำสั่งเรียกใช้ ถ้าเป็นแค่ คำสั่ง สองคำสั่ง...ก็ไม่เป็นไร แต่ถ้าคุณมี เทคนิคการปรับแต่งที่รวบรวมไว้เป็นร้อยเทคนิค และต้องการมารวมไว้ในโปรแกรมเพียงโปรแกรมเดียวมันไม่ง่าย...อย่างเช่นการสร้างโปรแกรม Tweak สักตัวถ้าเป็น VB6 คุณต้องใช้เวลาหลายวัน...และอาจทดสอบกันเป็นอาทิตย์เพื่อดูว่ามันทำงานได้ แต่ในทางกลับกัน ถ้าเป็น Web Application เองแค่เปิดแบตซ์ไฟล์ด้วย Notepad และสร้างคำสั่งยิงการแสดงผลไปที่เว็บไซต์ วิธีนี้...ประหยัดขั้นตอน...และข้อผิดพลาดได้มาก...ง่าย และนั้นคือเรื่องที่จะกว่าถึงในบล็อกนี้

    จากตอนแรก...เราสร้างเว็บ...เว็บสร้าง Batch File แต่ในตอน 2 นี้...Batch File สร้างเว็บ...เว็บส่งค่ากลับมายัง Batch File ที่สร้าง ซึ่งแตกต่างจากวิธีแรกโดยสิ้นเชิง (วิธีแรกเป็นการนำเสนอการเขียน Batch ง่ายๆ ที่จะรันบนเว็บไซต์ หากแต่มันไม่ได้ถูกควบคุมโดยแบตซ์ไฟล์เลย...แต่ถูกควบคุมด้วย JAVA Script) อย่าพึ่ง “งง” สรุปโดยสั้นๆ คือ บล็อกของผมเน้นการทำงานของ Batch File ที่สามารถควบคุมสิ่งต่างๆ ที่เกิดขึ้นภายใน Windows ได้ ซึ่งอาจจะไม่มีใครเขาทำกัน...แต่ผมเสนอ “คลิกไอเดีย” สำหรับคนที่สนใจ Batch File อย่างจริงจังมาควบคุมการทำงานของระบบปฎิบัติการวินโดวส์ นั้นเอง
ทำไมต้องใช้ Batch File สร้างเว็บ?
คำตอบคือ เพื่อความง่ายในการควบคุม โดยดูจากตารางเปรียบเทียบดังนี้
เว็บโดยทั่วไป
เว็บที่สร้างด้วย Batch File

เว็บโดยทั่วไป
เว็บที่สร้างด้วย Batch File
- สร้างด้วยภาษา HTML
- สร้างคำสั่ง HTML ด้วย Batch File
- ควบคุมการทำงานผ่าน JAVA หรือ VB
- สร้างคำสั่ง JAVA หรือ VB เพื่อควบคุมเล็กน้อย
- ส่งผลการทำงานหรือฟอร์มเอกสารกลับไปยังฟังก์ชั่น
ของภาษาที่ควบคุม
- ส่งผลการทำงานคำสั่งควบคุมให้โยนตัวแปร
หรือพารามิเตอร์กลับมายัง Batch File
- คำสั่งและหน้าเว็บอยู่ในไฟล์เดียวกัน
- คำสั่ง Batch File แยกเป็นเอกเทศ และสร้างเว็บ
หลอกๆ ขึ้นมาแสดงผลชั่วคราว
- ทำงานเร็วกว่า แต่คำสั่งที่สามารถเจาะลึกไปยัง
ระบบไม่ได้เพราะข้อจำกัดของสคริป
- ทำงานข้ากว่า สามารถส่งอะไรหรือเจาะลึกไป
ยังระบบวินโดวส์ส่วนใดก็ได้ เช่น โยนผลการ
ทำงานของ คำสั่ง SET ออกทางเว็บหลอกๆ ก็ได้

มาดูแผนภาพแสดงการทำงาน



ภาพนี้ แสดงการทำงานแบบตัวอย่างแรกที่ Batch File ไม่สามารถรับค่าหรือพารามิเตอร์ใดๆ จาก เว็บได้



ภาพนี้...แสดงตัวอย่างการสร้างเว็บด้วย Batch File และคืนค่าหรือพารามิเตอร์ที่ได้จาก Script ภายใน เว็บ เพื่อให้ Batch File สามารถทำงานได้อย่างเป็นเอกเทศได้

ตัวอย่าง Batch File แบบสร้างการสื่อสารภาษาไทยกับเว็บ
@echo off
if "%1"=="/a" goto :TestPara
:Main
cls
title โปรแกรมทดสอบการส่งและคืนค่าจากหน้าเว็บที่สร้าง โดย ธนัตถ์เดชน์  บุญลือลักษณ์
echo 1.Show Marquee Message
echo 2.Show Background Color
echo 3.Set Titlebar
echo 4.Testing HTML Call Module Batch File
set /p m=Type Menu Number=
if %m%==1 call :Marquee
if %m%==2 call :SetColor
if %m%==3 call :SetTitle
if %m%==4 call :CallModule
goto :Main

:Marquee
(
  echo ^<marquee^>
  echo นี้คือตัววิ่งสร้างโดย Batch File [Coding By] : ธนัตถ์เดชน์  บุญลือลักษณ์
  echo ^</marquee^>
)>>Test.htm
start Test.htm
goto :Eof

:SetColor
(
  echo ^<body bgcolor="#ff99cc"^>
  echo ^</body^>
)>>Test.htm
start Test.htm
goto :Eof

:SetTitle
(
  echo ^<head^>
  echo ^<title^>ทดสอบการใส่คำสั่งผ่าน Batch File โดย ธนัตถ์เดชน์  บุญลือลักษณ์^</title^>
  echo ^</head^>
)>Test.htm
start Test.htm
goto :Eof

:CallModule
( echo ^<head^>
  echo ^<title^>ทดสอบการส่งผ่านข้อมูลกลับมายัง Batch File ที่เรียกใช้งาน^</title^>
  echo ^</head^>
)>Test.htm
( echo ^<script language="JAVAScript"^>
  echo var jsob = new ActiveXObject^("Wscript.Shell"^);
  echo jsob.run^("CatEye.bat /a"^);
  echo ^</script^>
  echo 1.สามารถสร้างหน้าเว็บด้วย Batch File^<br^>
  echo 2.ส่งข้อมูลกลับมายัง Batch File ที่สร้างหน้าเว็บได้^<br^>
  echo 3.ความซับซ้อนอยู่ที่การส่งผ่านค่าทาง Parameter ของ Batch File นั้น^<br^>
)>>Test.htm
start Test.htm
goto :Eof

:TestPara
msg %username% การทดสอบพารามิเตอร์ทำงานได้
goto :Eof




ตัวอย่าง หน้าเว็บ

ประโยชน์ที่จะได้รับคืออะไร?
คำตอบคือ Batch File สามารถส่งภาษาไทยขึ้นไปโต้ตอบกับผู้ใช้ผ่านเว็บอีกที และยังสามารถรับค่าและคีย์ค่าผ่านเว็บได้ เช่น หน้าจอ Log In หรือ กล่องข้อความ Yes No เพื่อตัดสินใจทำหรือไม่ทำใน Batch File โดยที่ไม่จำเป็นต้องเขียน Application รองรับ อาศัยแค่หลักการง่ายๆ ของ Plaintext ที่ใช้งานแค่เพียงตัวอักษรภาษาไทยและอังกฤษเขียนขึ้นมาเป็นโปรแกรมใช้งานทั่วๆ ไปได้
               แต่หากวิธีที่กล่าวมาตอนนี้...ยังไม่ถูกใจ...คราวหน้าเรามาลง Font ภาษาไทยใน Cmd.exe กันว่ามันใช้งานภาษาไทยบน Console ได้ดีมากแค่ไหน...และอะไรคือปัญหาเมื่อต้องนำ Batch File ไปรันเครื่องอื่นๆ ที่ไม่มี Font ภาษาไทย

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

  1. ช่วยอธิบายส่วนนี้เพิ่มเติมหน่อยครับ
    if "%1"=="/a"

    ตอบลบ