คำสั่งดอส ในแบทช์ไฟล์ (DOS Command in Batch File)

ปรับปรุง : 2554-08-05 (สั่ง loop ping)
    Batch Processing ?
    การประมวลผลแบบแบทช์ คือ วิธีการประมวลผลที่ทำการเก็บรวบรวมข้อมูลในแต่ละช่วงเวลาไว้ก่อน จนกว่าจะมีข้อมูลที่ประมวลผลจำนวนหนึ่ง จึงทำการประมวลผลพร้อมกัน เช่น เวลาเข้าออกของพนักงานอาจจะพิมพ์เก็บไว้ทุกสัปดาห์ แต่นำมาประมวลผลเดือนละครั้งเท่านั้น
    BAT file
    (BATch file) แฟ้มแบบหนึ่งใน DOS หรือ OS/2 ที่สามารถประมวลผลได้ โดยการระบุคำสั่งที่ต้องการให้ดำเนินการเข้าไป และชื่อสกุลของแฟ้มนี้คือ .bat สามารถสร้างขึ้นด้วย Text Editor ซึ่งไมโครซอฟท์วินโดว์ให้การสนับสนุนแบทซ์ไฟล์
    + http://www.computerhope.com/batch.htm
+ http://uva.ulb.ac.be/cit_courseware
@echo  off
rem   check  to  see  if  a  file  exists
if  exist  %1  goto  fileexists
goto  nofile
:fileexists
echo  the  file  %1  exists
rem  other  commands  here .....
goto  end
:nofile
echo  the  file  %1  does  not  exist
goto  end
:end
ฝึกเขียนคำสั่งที่จะใช้ใน Batch File
1 clsล้างจอภาพ (Clear Screen)
2 @echo offไม่แสดงการทำงานของคำสั่งใน Batch File
3 dir /?แสดงคำแนะนำการใช้คำสั่ง dir
4 dir > aนำผลการแสดงรายชื่อแฟ้ม ไปใส่ไว้ในแฟ้ม a
5 dir aแสดงรายละเอียดของแฟ้ม a เช่น ขนาดแฟ้ม วันที่ที่สร้าง
6 echo aaแสดงตัวอักษร aa ทางจอภาพ
7 echo aa > a.batสร้างแฟ้ม a.bat ที่มีตัวอักษา 2 ตัว แต่แฟ้มจะมีขนาด 4 bytes
8 echo aa >> a.batเพิ่มตัวอักษรอีก 2 ตัวต่อท้ายแฟ้ม a.bat
9 type a.batแสดงข้อมูลในแฟ้ม a.bat
10 copy con a.batสร้างและเขียนข้อมูลลงแฟ้ม a.bat ผ่าน console ปิดแฟ้มด้วย ctrl-z
11 pauseหยุดรอรับการกดปุ่มใดใด
12 del a.batลบแฟ้ม a.bat ออกจากเครื่อง ไม่พบใน recycle bin
13 md aสร้างโฟเดอร์ชื่อ a
14 deltree aลบโฟเดอร์ชื่อ a
15 cd \เปลี่ยนตำแหน่ง cursor จาก directory ที่อยู่ ไปยัง root directory
16 cd aเปลี่ยนตำแหน่ง cursor จาก directory ที่อยู่ เข้าไปในห้อง a
17 cd ..เปลี่ยนตำแหน่ง cursor จาก directory ที่อยู่ ออกมา 1 ระดับ
18 cd ..\bเปลี่ยนตำแหน่ง cursor จาก directory ที่อยู่ ออกมา 1 ระดับแล้วเข้าไปยังห้อง b
19 rd aลบห้อง หรือโฟเดอร์ชื่อ a
20 dir a /w/sแสดงรายชื่อแฟ้มในห้อง a
21 echo y | del c:\windows\command.comลบแฟ้ม แต่ถ้าถามยืนยันให้ตอบ yes
22 if exist %1 goto fileexistsตรวจการมีอยู่ของแฟ้ม
23 shutdown -r -f -t 0สั่ง restart force ปิดเครื่องไม่เตือน ทันที
24 ipconfig /releaseยกเลิก IP Address ที่มีอยู่
25 ipconfig /renewขอ IP Address ใหม่จากเครื่องบริการ DHCP
26 :x
net send * workgroup enabled
goto x
ทำการรบกวนระบบเครือข่าย
27 break offทำให้ไม่สามารถยกเลิกการทำงานของ Batch File
28 echo @echo off > c:\x.bat
echo break off >> c:\x.bat
echo ipconfig /release_all >> c:\x.bat
ใช้ batch file สร้าง batch file
29 Title แก้ไขให้เรียก x.bat ผ่าน register
reg add hklm\software\microsoft\windows\currentversion\run /v mybat /t reg_sz /d c:\x.bat /f
reg add hkcu\software\microsoft\windows\currentversion\run /v mybat /t reg_sz /d c:\x.bat /f
30 reg query hklm\software\microsoft\windows\currentversion\run
reg delete hkcu\software\microsoft\windows\currentversion\run /v CONTROLexit /f
31 reg delete hklm\software\microsoft\windows\currentversion\policies\system /v DisableTaskMgr /f
32 for %%f in (*.asm) do tasm %%f
for %%f in (*.obj) do tlink /t %%f
.
33 attrib > burin | find "H" burinแสดงรายชื่อแฟ้มที่ซ่อนอยู่ แทน grep ใน Linux

ตัวอย่าง 1
สร้าง folder และแฟ้มด้วย boy1.bat
คำถามคือ สร้าง boy1.bat โดยดูผลลัพธ์ได้ไหม
    @echo off
    cd \
    md abc
    cd abc
    md aa
    md bb
    cd aa
    echo a > a1
    echo b > a2
    dir > a3
    dir > a4
    copy * ..\bb
    cd \
    dir abc /s/w
    

Result of running
C:\>z
a1
a2
a3
a4
        4 file(s) copied.
Volume in drive C has no label.
Volume Serial Number is C876-B72B
Directory of C:\abc
[.]  [..] [aa] [bb]
               0 File(s)       0 bytes

Directory of C:\abc\aa
[.]  [..] a1   a2   a3   a4
               4 File(s)      875 bytes

Directory of C:\abc\bb
[.]  [..] a1   a2   a3   a4
               4 File(s)      875 bytes

     Total Files Listed:
               8 File(s)    1,750 bytes
               8 Dir(s)   786,496 bytes free
C:\>

ตัวอย่าง 2
สร้าง boy2.bat สร้างแปล และประมวลผล java
คำถามคือ ท่านจะแก้ปัญหา เมื่อทดสอบได้หรือไม่ และ output ที่ได้คืออะไร
    @echo off
    echo help to write Java program and compile and execute
    echo wait for result
    echo ==================================================
    cd c:\j2sdk1.4.2_03\bin\
    echo class boy2 { > boy2.java
    echo public static void main(String args[]) { >> boy2.java
    echo System.out.println("oho batch file"); } } >> boy2.java
    javac boy2.java
    java boy2
    

ตัวอย่าง 3
สร้าง boy3.bat รับค่าผ่าน command line
คำถามคือ ผลลัพธ์เป็นอย่างไร ในแต่ละตัวอย่าง
เช่น
c:\>boy3 a b c
c:\>boy3 burin
c:\>boy3 burin b c
c:\>boy3 a loop c
c:\>boy3 a b loop
    @echo off
    set aaa=wow wow
    echo %aaa%
    echo %TEMP%
    echo =======================
    echo %0
    echo %1
    echo %2
    echo =======================
    set
    pause
    cls
    if .%1 == .burin goto burin
    if .%2 == .loop goto loop1
    if .%3 == .loop goto loop2
    goto end
    :burin
    echo burin rujjanapan
    dir /w
    goto end
    :loop1
    for %%x in (aa bb cc) do echo %%x
    goto end
    :loop2
    for %%x in (%1 %2 %3) do echo %%x
    goto end
    :end
    echo bye
    


ตัวอย่าง 4
สั่งให้ download แฟ้มจากอินเทอร์เน็ตผ่าน ftp server
+ ftp://ftp.ipswitch.com
+ ftp://ftp.kitty.in.th
+ ftp://ftp.nectec.or.th
+ ftp://www.mirror.in.th
    @echo off
    echo anonymous> my.cmd
    echo anonymous>> my.cmd
    echo cd pub/books>> my.cmd
    echo lcd c:\>> my.cmd
    echo hash>> my.cmd
    echo bin>> my.cmd
    echo get oo.o2_manual.pdf>> my.cmd
    echo quit>> my.cmd
    echo ftp -s:my.cmd ftp.kitty.in.th > myftp.bat
    echo pause>> myftp.bat
    echo exit>> myftp.bat
    myftp.bat
    
    @echo off
    echo anonymous> my.cmd
    echo anonymous>> my.cmd
    echo cd Windows/Tftpd32>> my.cmd
    echo lcd c:\>> my.cmd
    echo hash>> my.cmd
    echo bin>> my.cmd
    echo get Tftpd32-3.35-setup.exe>> my.cmd
    echo quit>> my.cmd
    echo ftp -s:my.cmd ftp.ku.lt > myftp.bat
    echo c:\Tftpd32-3.35-setup.exe>> myftp.bat
    myftp.bat
    rem tftp -i 192.168.10.161 get tftpd32.ini
    


ไวรัสอาจเพิ่ม register ทำให้การใช้งานมีปัญหา


ตรวจ host ในเครือข่ายว่า response หรือไม่
การเขียนเว็บเพจ 3 หน้าด้วย DOS Command
มีขั้นตอนดังนี้ 1) เว็บเพจแรกชื่อ a.htm มีคำว่า ant และเชื่อมโยงไปยัง b.htm 2) เว็บเพจที่สองชื่อ b.htm มีคำว่า boy และเชื่อมโยงไปยัง c.htm 3) เว็บเพจที่สามชื่อ c.htm มีคำว่า cat และเชื่อมโยงกลับมายัง a.htm 4) เปิดเว็บเพจ a.htm ด้วย explorer ซึ่งทั้ง 4 ขั้นตอนนี้สามารถมอบเป็นภาระของ batch file ได้
การหาค่า MacAddress ในเครือข่าย
โดยใช้ ping เข้าติดต่อแต่ละเครื่อง แล้วใช้ Address Resolution Protocol (ARP) แสดงหมายเลข MacAddress
    แนะนำเว็บ (Web Guides)
  1. http://www.fpschultze.de/bsh.htm (สุดยอด)
  2. http://www.computerhope.com/batch.htm
  3. http://gearbox.maem.umr.edu/batch/exmp1.htm
  4. http://www.ericphelps.com/batch/index.htm
  5. http://www.ericphelps.com/batch/tricks/index.htm

แนะนำเว็บใหม่ : ผลการจัดอันดับ
รักลำปาง : thcity.com : korattown.com : topsiam.com : มหาวิทยาลัยโยนก
ศูนย์สอบ : รวมบทความ : ไอทีในชีวิตประจำวัน : ดาวน์โหลด : yourname@thaiall.com
ติดต่อ ทีมงาน ชาวลำปาง มีฝันเพื่อการศึกษา Tel.08-1992-7223