หลาย วันมานี้ ผมมีความจำเป็นที่ต้องหาความรู้เกี่ยวกับ Batch File ซึ่งตัวผมเคยแต่ได้ยินมา ยังไม่เคยได้ลองด้วยตัวเองซักที ตอนนี่กำลังพยายามเรียนรู้กับมันอยู่ ด้วยความที่ต้องเริ่มต้นจาก 0 จึงต้องควานหาความรู้จากหลายๆเวป บางเวปก็งงกับภาษา ผมก้อเลยคิดว่าจะลองรวบรวมความรู้ที่ได้เป็นภาษาง่ายๆ ตามความเข้าใจของผม เพราะเป็นคนที่เริ่มจาก 0 ให้เพื่อนๆที่อาจต้องการความรู้ในเรื่องนี้ครับ
(ผมอาจจะยังไม่รู้ในหลายๆเรื่อง ถ้ามีผู้เชี่ยวชาญผ่านมาเห็นก้อรบกวนขอคำแนะนำด้วยคับผม o(#'U'#)o)
มาเริ่มกันเลยดีกว่าคับ
Batch File คืออะไร ?
Batch File เป็นชุดคำสั่งที่เขียนเพื่อสั่งให้ Computer ทำงานตามคำสั่งนั้นคับ โดยที่หน้าตาของไอ้เจ้าคำสั่งใน Batch File นั้น ก้อคือ คำสั่งทีี่่เราพิมพ์ใน Command Prompt นั่นเอง (Start > Run พิมพ์ cmd) เช่น
C:> echo hello [พิมพ์ แล้วกด Enter]
hello [Output ที่ได้]
C:> echo world [พิมพ์ แล้วกด Enter]
world [Output ที่ได้]
เมื่อเราพิมพ์ แล้วกด Enter สิ่งที่ได้คือ คำ่ว่า hello
คำสั่ง echo เป็นการสั่งให้ระบบมันสะท้อน ข้อความ ที่เราเขียนดังตัวอย่างข้างบน
ในการสร้าง Batch File เราก้อแค่เอาคำสั่งที่ใช้ใน Command Prompt เหล่านี้ไปเขียนต่อๆกัน ให้มันทำงาน
Concept ไม่ยากใช่ไหมคับ งั้นมาต่อกันเลยนะคับ
การสร้าง Batch File ทำอย่างไร ?
จากที่ผมอธิบายไป การสร้าง Batch File คือ การเอาชุดคำสั่งมาเขียนต่อๆกัน ที่นี้เราจะสร้าง Batch File ขั้นแรกเราก้อต้องหาที่เขียนก่อน ซึ่งก้อมีหลายตัวที่เราสามารถใช้ได้ ในที่นี่เราจะใช้ตัว notepad ในการเขียนนะคับ
หลังจากเปิดขึ้นมาแล้วเป็นหน้ากระดาษเปล่า ลองพิมพ์ชุดคำสั่งตามนี้นะคับ
echo hello
echo world
แล้ว ก้อทำการ Save คับ !!! แต่ การ Save เราจำเป็นต้องกำหนดนามสกุลเป็น Batch File เองคับ โดยเติม .bat ต่อท้ายชื่อ File ที่เราต้องการ Save (เพื่อความง่ายในการอธิบาย ผมจะขอทำการ Save ไว้ที่ Drive C นะคับ)
มาถึงตรงนี้ เราก้อได้ Batch File มาแล้วคับ เราลองมา Run ดูนะคับ
ให้เปิด Command Prompt ขึ้นมาแล้ว พิมพ์
cd \
เพื่อเปลี่ยน Directory ไปที่ Root ซึ่งในที่นี่ คือ Drive C (cd คือ Change Directory ครับ ส่วน \ เป็นสัญลักษณ์ที่แทน Root ครับ)
เราจะเห็น Prompt เป็น
C:\>
ให้เราพิมพ์ชื่อ File ที่เราสร้างไว้คับ
C:\> TEST.bat
ผลลัพธ์ที่ได้จะเป็น
C:\>echo hello
hello
C:\>echo world
world
จะเห็นได้ว่า ระบบจะทำงานตามคำสั่งที่เราเขียน เหมือนกับเราเป็นคนพิมพ์เองเลยทีเดียว
แต่ คราวนี้เวลาเอาไปใช้ เราอาจไม่ต้องการให้คนอื่นเห็นคำสั่งที่เราเขียน เราก้อแค่ใช้คำสั่งซ่อนสิ่งที่เราเขียนไว้เท่านั้นเอง นั่นคือ
echo off
งั้นมาลองกันคับ ให้ไปที่ File TEST.bat ของเรา แล้วกด Click ขวา เลือก Edit จะเห็นเป็น notepad ขึ้นมาคับ
ให้เพิ่มคำสั่ง echo off ที่บรรทัดแรกสุด
echo off
echo hello
echo world
แล้วทำการ Save คับ เราลองมา Run ดูใหม่นะคับ (วิธีตามวิธีข้างต้นเลยคับ) ผลที่ได้จะเป็น
C:\>echo off
hello
world
จะ เห็นว่ามีการพิมพ์คำสั่ง echo off เพื่อทำการซ่อนคำสั่งของเราแล้ว คำสั่งที่หลังจากนี้ก้อจะไม่แสดงคำสั่งของเราแล้วคับ o(#^u^#)o
!!! แต่ถ้าเราอยากให้ไม่แสดงคำสั่ง echo off ด้วยล่ะ จะได้ไหม
!!! ได้คับ เราก้อแค่เติม @ ข้างหน้า echo off เท่านั้นเองคับ เราลองไปเพิ่มใน notepad นะคับ ก้อจะได้เป็น
@echo off
echo hello
echo world
ทำการ Save แล้วก้อ Run เลยคับ GO GO GO !!!
จะเห็นว่าผลที่ได้จะเหลือแค่
hello
world
เพราะว่าเครื่องหมาย @ เป็นการบอกว่าให้ใช้คำสั่งนั้นกัับตัวมันด้วยคับ เพราะฉะนั้นตัว echo off ก้อเลยถูกซ่อนไปด้วย
เป็นยังไงบ้างคับ หวังว่าผู้ที่ (หลงเข้ามา) อ่านคงจะได้ความรู้เรื่อง Batch File มากขึ้นนะคับ
ผมก้อยังเป็นมือใหม่เหมือนกัน เรามาหาความรู้แล้วก้อโตไปพร้อมๆกันนะคับผม
ลองเขียนดูแล้วครับ
@echo off
XCOPY C:\1234 D:\5678 /S /E
พอรันไฟล์ก้อขึ้นหน้าจอ
Does D:\5678 specify a file name
or directory name on the target
(F = file, D = directory)?
ถ้าใส่ D Enter ก้อจะได้ตามต้องการ แต่สิ่งที่อยากได้เพิ่มเติมและหาไม่เจอคือ
1. อันดับแรกไม่อยากให้มันขึ้นกรอบเพื่อที่จะต้องตอบเลย (D Enter)
2. อยากให้มันสร้างโฟล์เดอร์วันที่เองแทนโฟล์เดอร์ 5678 ได้ไหมครับ แล้ว ถ้ามีข้อความเข้าไปด้วยจะยากเกินไปไหม
3. อยากให้มัน run auto ตอนไม่มีคนใช้แล้วเช่น ทุก ๆ วันตอน 21.00 ครับ จะทำได้ไหม
ตามนี้นะครับ ท่าน
ตามคำสั่ง ด้านบน มันจะ ทำการ Copy Files จาก Folder ที่ C:\data ไปไว้ที่ E:\backup\วันที่_เดือน_ปี ครับ
หากจะเอาไปใช้จริงๆก็ ทำการแก้ ตัวแปล ต้นทาง set data=C:\data set drive=E:\backup ปายทาง ให้ตรงกับที่อยู่ Folder ของท่านก่อนนะครับ
และ หาจะ ให้มันรันเองทุกๆวัน เวลา 21.00 ก็ให้ save เป็น bat ตัวอย่างนี้ ผมใช้ชื่อ backup.bat แล้วไปเพี่มให้มันรันไฟลนี้ ที่
Start > Control Panel > scheduled task
แล้ว Add
เลือกหาไฟล backup.bat
ใช่ชื่อให้ มัน ว่า Back up และ เลือกเป็นแบบ daily
เลือกเวลานะครับ
ใส่ password ของ user ของท่าน ครับ หากไม่มีก็ไม่ใส่ครับ
แล้วทดสอบ กดที่ RUN
จบครับ
ขอบคุญ รูปจาก
http://teamtutorials.com/windows-tutorials/create-a-windows-daily-backup-script
ส่วน Script เอามาจากหลายๆ ที่ ปะปนกันครับ
โดยแนวทางหลักมาจากเวปนี้ครับ
http://www.speedguide.net/read_articles.php?id=1547
(ผมอาจจะยังไม่รู้ในหลายๆเรื่อง ถ้ามีผู้เชี่ยวชาญผ่านมาเห็นก้อรบกวนขอคำแนะนำด้วยคับผม o(#'U'#)o)
มาเริ่มกันเลยดีกว่าคับ
Batch File คืออะไร ?
Batch File เป็นชุดคำสั่งที่เขียนเพื่อสั่งให้ Computer ทำงานตามคำสั่งนั้นคับ โดยที่หน้าตาของไอ้เจ้าคำสั่งใน Batch File นั้น ก้อคือ คำสั่งทีี่่เราพิมพ์ใน Command Prompt นั่นเอง (Start > Run พิมพ์ cmd) เช่น
C:> echo hello [พิมพ์ แล้วกด Enter]
hello [Output ที่ได้]
C:> echo world [พิมพ์ แล้วกด Enter]
world [Output ที่ได้]
เมื่อเราพิมพ์ แล้วกด Enter สิ่งที่ได้คือ คำ่ว่า hello
คำสั่ง echo เป็นการสั่งให้ระบบมันสะท้อน ข้อความ ที่เราเขียนดังตัวอย่างข้างบน
ในการสร้าง Batch File เราก้อแค่เอาคำสั่งที่ใช้ใน Command Prompt เหล่านี้ไปเขียนต่อๆกัน ให้มันทำงาน
Concept ไม่ยากใช่ไหมคับ งั้นมาต่อกันเลยนะคับ
การสร้าง Batch File ทำอย่างไร ?
จากที่ผมอธิบายไป การสร้าง Batch File คือ การเอาชุดคำสั่งมาเขียนต่อๆกัน ที่นี้เราจะสร้าง Batch File ขั้นแรกเราก้อต้องหาที่เขียนก่อน ซึ่งก้อมีหลายตัวที่เราสามารถใช้ได้ ในที่นี่เราจะใช้ตัว notepad ในการเขียนนะคับ
หลังจากเปิดขึ้นมาแล้วเป็นหน้ากระดาษเปล่า ลองพิมพ์ชุดคำสั่งตามนี้นะคับ
echo hello
echo world
แล้ว ก้อทำการ Save คับ !!! แต่ การ Save เราจำเป็นต้องกำหนดนามสกุลเป็น Batch File เองคับ โดยเติม .bat ต่อท้ายชื่อ File ที่เราต้องการ Save (เพื่อความง่ายในการอธิบาย ผมจะขอทำการ Save ไว้ที่ Drive C นะคับ)
มาถึงตรงนี้ เราก้อได้ Batch File มาแล้วคับ เราลองมา Run ดูนะคับ
ให้เปิด Command Prompt ขึ้นมาแล้ว พิมพ์
cd \
เพื่อเปลี่ยน Directory ไปที่ Root ซึ่งในที่นี่ คือ Drive C (cd คือ Change Directory ครับ ส่วน \ เป็นสัญลักษณ์ที่แทน Root ครับ)
เราจะเห็น Prompt เป็น
C:\>
ให้เราพิมพ์ชื่อ File ที่เราสร้างไว้คับ
C:\> TEST.bat
ผลลัพธ์ที่ได้จะเป็น
C:\>echo hello
hello
C:\>echo world
world
จะเห็นได้ว่า ระบบจะทำงานตามคำสั่งที่เราเขียน เหมือนกับเราเป็นคนพิมพ์เองเลยทีเดียว
แต่ คราวนี้เวลาเอาไปใช้ เราอาจไม่ต้องการให้คนอื่นเห็นคำสั่งที่เราเขียน เราก้อแค่ใช้คำสั่งซ่อนสิ่งที่เราเขียนไว้เท่านั้นเอง นั่นคือ
echo off
งั้นมาลองกันคับ ให้ไปที่ File TEST.bat ของเรา แล้วกด Click ขวา เลือก Edit จะเห็นเป็น notepad ขึ้นมาคับ
ให้เพิ่มคำสั่ง echo off ที่บรรทัดแรกสุด
echo off
echo hello
echo world
แล้วทำการ Save คับ เราลองมา Run ดูใหม่นะคับ (วิธีตามวิธีข้างต้นเลยคับ) ผลที่ได้จะเป็น
C:\>echo off
hello
world
จะ เห็นว่ามีการพิมพ์คำสั่ง echo off เพื่อทำการซ่อนคำสั่งของเราแล้ว คำสั่งที่หลังจากนี้ก้อจะไม่แสดงคำสั่งของเราแล้วคับ o(#^u^#)o
!!! แต่ถ้าเราอยากให้ไม่แสดงคำสั่ง echo off ด้วยล่ะ จะได้ไหม
!!! ได้คับ เราก้อแค่เติม @ ข้างหน้า echo off เท่านั้นเองคับ เราลองไปเพิ่มใน notepad นะคับ ก้อจะได้เป็น
@echo off
echo hello
echo world
ทำการ Save แล้วก้อ Run เลยคับ GO GO GO !!!
จะเห็นว่าผลที่ได้จะเหลือแค่
hello
world
เพราะว่าเครื่องหมาย @ เป็นการบอกว่าให้ใช้คำสั่งนั้นกัับตัวมันด้วยคับ เพราะฉะนั้นตัว echo off ก้อเลยถูกซ่อนไปด้วย
เป็นยังไงบ้างคับ หวังว่าผู้ที่ (หลงเข้ามา) อ่านคงจะได้ความรู้เรื่อง Batch File มากขึ้นนะคับ
ผมก้อยังเป็นมือใหม่เหมือนกัน เรามาหาความรู้แล้วก้อโตไปพร้อมๆกันนะคับผม
ลองเขียนดูแล้วครับ
@echo off
XCOPY C:\1234 D:\5678 /S /E
พอรันไฟล์ก้อขึ้นหน้าจอ
Does D:\5678 specify a file name
or directory name on the target
(F = file, D = directory)?
ถ้าใส่ D Enter ก้อจะได้ตามต้องการ แต่สิ่งที่อยากได้เพิ่มเติมและหาไม่เจอคือ
1. อันดับแรกไม่อยากให้มันขึ้นกรอบเพื่อที่จะต้องตอบเลย (D Enter)
2. อยากให้มันสร้างโฟล์เดอร์วันที่เองแทนโฟล์เดอร์ 5678 ได้ไหมครับ แล้ว ถ้ามีข้อความเข้าไปด้วยจะยากเกินไปไหม
3. อยากให้มัน run auto ตอนไม่มีคนใช้แล้วเช่น ทุก ๆ วันตอน 21.00 ครับ จะทำได้ไหม
ตามนี้นะครับ ท่าน
โค๊ด:
@echo off :: variables set data=C:\data set drive=E:\backup set folder=%Date:~-7,2%_%Date:~-10,2%_%Date:~-4,4% set backupcmd=xcopy /s /c /d /e /h /i /r /k /y echo ### Backing up directory... %backupcmd% "%data%" "%drive%\%folder%" echo Backup Complete!
ตามคำสั่ง ด้านบน มันจะ ทำการ Copy Files จาก Folder ที่ C:\data ไปไว้ที่ E:\backup\วันที่_เดือน_ปี ครับ
หากจะเอาไปใช้จริงๆก็ ทำการแก้ ตัวแปล ต้นทาง set data=C:\data set drive=E:\backup ปายทาง ให้ตรงกับที่อยู่ Folder ของท่านก่อนนะครับ
และ หาจะ ให้มันรันเองทุกๆวัน เวลา 21.00 ก็ให้ save เป็น bat ตัวอย่างนี้ ผมใช้ชื่อ backup.bat แล้วไปเพี่มให้มันรันไฟลนี้ ที่
Start > Control Panel > scheduled task
แล้ว Add
เลือกหาไฟล backup.bat
ใช่ชื่อให้ มัน ว่า Back up และ เลือกเป็นแบบ daily
เลือกเวลานะครับ
ใส่ password ของ user ของท่าน ครับ หากไม่มีก็ไม่ใส่ครับ
แล้วทดสอบ กดที่ RUN
จบครับ
ขอบคุญ รูปจาก
http://teamtutorials.com/windows-tutorials/create-a-windows-daily-backup-script
ส่วน Script เอามาจากหลายๆ ที่ ปะปนกันครับ
โดยแนวทางหลักมาจากเวปนี้ครับ
http://www.speedguide.net/read_articles.php?id=1547
thank u
ตอบลบโอ้ ขอบคุณครับ เจ๋งดี
ตอบลบขอโทษนะครับคือผมอยากสร้าง bat file ให้สามารถรันตัวไฟล์ .ocx ที่มีอยู่ และแตกไฟล์ลงใน folder นั้นได้หรือเปล่าครับและต้องใช้คำสั่งไหนครับ เท่าที่ผมลองทำดูได้แบบนี้ครับไม่รู้ว่าจะถูกหรือเปล่าช่วยแนะนำด้วยครับ
ตอบลบ@echo off
cls
echo ran
comct232.ocx
COMCT332.OCX
COMCTL32.OCX
COMDLG32.OCX
MCI32.OCX
MSADODC.OCX
MSCHART.OCX
MSCHRT20.OCX
MSCOMCT2.OCX
MSCOMCTL.OCX
MSCOMM32.OCX
MSDATGRD.OCX
MSDATLST.OCX
MSFLXGRD.OCX
MSHFLXGD.OCX
MSINET.OCX
MSMASK32.OCX
MSRDC20.OCX
MSSCRIPT.OCX
MSWINSCK.OCX
PICCLP32.OCX
RICHTX32.OCX
TABCTL32.OCX
THREED32.OCX
VB5DB.DLL
VSPRINT7.ocx
vsprint8.ocx
WBCLSDSR.OCX
exit