คำสั่งดอส ในแบทช์ไฟล์ DOS Command in Batch File
Batch Processing ?
การประมวลผลแบบแบทช์ คือ วิธีการประมวลผลที่ทำการเก็บรวบรวมข้อมูลในแต่ละช่วงเวลาไว้ก่อน จนกว่าจะมีข้อมูลที่ประมวลผลจำนวนหนึ่ง จึงทำการประมวลผลพร้อมกัน เช่น เวลาเข้าออกของพนักงานอาจจะพิมพ์เก็บไว้ทุกสัปดาห์ แต่นำมาประมวลผลเดือนละครั้งเท่านั้น
BAT file
(BATch file) แฟ้มแบบหนึ่งใน DOS หรือ OS/2 ที่สามารถประมวลผลได้ โดยการระบุคำสั่งที่ต้องการให้ดำเนินการเข้าไป และชื่อสกุลของแฟ้มนี้คือ .bat สามารถสร้างขึ้นด้วย Text Editor ซึ่งไมโครซอฟท์วินโดว์ให้การสนับสนุนแบทซ์ไฟล์
+ http://www.computerhope.com/batch.htm
DOS> echo ^<a href=a.htm^>a^</a^> > a.htm
DOS> explorer a.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
+ ftp://ftp.chatnfiles.com
    @echo off
    echo anonymous> my1.cmd
    echo anonymous>> my1.cmd
    echo cd pub/books>> my1.cmd
    echo hash>> my1.cmd
    echo bin>> my1.cmd
    echo get oo.o2_manual.pdf>> my1.cmd
    echo quit>> my1.cmd
    echo ftp -s:my1.cmd ftp.kitty.in.th > myftp.bat
    echo pause>> myftp.bat
    echo exit>> myftp.bat
    myftp.bat
    
    @echo off
    echo anonymous > my2.cmd
    echo anonymous >> my2.cmd
    echo cd simtelnet/winxp/desknote >> my2.cmd
    echo lcd e:\ >> my2.cmd
    echo hash >> my2.cmd
    echo bin >> my2.cmd
    echo get freestickynotes.exe >> my2.cmd
    echo quit >> my2.cmd
    echo ftp -s:my2.cmd ftp.chatnfiles.com > my.bat
    echo e:\freestickynotes.exe >> my.bat
    my.bat
    rem tftp -i 122.122.122.122 get tftpd32.ini
    rem http://tftpd32.jounin.net/download/Tftpd32-3.35-setup.exe
    


ไวรัสอาจเพิ่ม 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
ชอบภาพใน Spotlight บน Windows 10

นั่งใช้เครื่องคอมพิวเตอร์ แล้วเห็นภาพสวย 
จากบริการ Spotlight ใน Windows 10
ก็อยากเก็บไว้เป็นที่เป็นทาง
เปิดดูใน https://www.beartai.com/beartai-tips/74769
กับอีกหลายคำแนะนำในหลายเว็บไซต์ ก็อยากทำบ้าง
แต่อยากให้ง่าย
แบบ one click แล้ว ผ่าน batch file
แล้วได้เห็นภาพเลย
ขั้นตอนการใช้ batchfile
1. Right click บน link
http://www.thaiall.com/assembly/myspotlight.bat
แล้ว Save link as ไปไว้ที่ Desktop
2. เปิด Windows Explorer เลือก Desktop
แล้ว Double click เพื่อ run myspotlight.bat
ถ้า Windows protected your PC ขึ้นมาเตือน
ให้เลือก More info
แล้วคลิ๊ก Run anyway
3. ถ้าทุกอย่างเรียบร้อย
โปรแกรม Windows explorer จะเปิดภาพแรกขึ้นมา
และเปิด Folder ที่เก็บภาพทั้งหมดให้

สรุปว่า
ผมเขียน Batch file ชื่อ myspotlight.bat
ทำหน้าที่คัดลอกแฟ้มภาพ ที่เก็บไว้อยู่แล้ว 
ไปวางไว้ในห้อง myspotlight บน desktop 
แล้วเปลี่ยนชื่อ และเลือกมา เฉพาะแฟ้มภาพใหญ่ที่ขนาดเกิน 100KB

บริการนี้เป็นของ Windows 10
ตรวจสอบบริการ โดยกด Right click บน Desktop
เลือก Personalize, Lock screen, 
Background Preview = "Windows spotlight"
---
Windows Spotlight is a feature included by default in Windows 10 
that downloads pictures and advertisements automatically from Bing 
and displays them when the lock screen is being shown 
on a computer running Windows 10. 
Users are occasionally given an opportunity to mark 
whether they wish to see more or fewer images of a similar type, 
and sometimes the images are overlaid with links to advertisements. 
In 2017, Microsoft began adding location information 
for many of the photographs.
https://en.wikipedia.org/wiki/Windows_Spotlight
---
ตัวอย่างการใช้คำสั่ง rename
https://technet.microsoft.com/en-us/library/bb490987.aspx
ตัวอย่างการเขียน for
https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/for.mspx?mfr=true
ตัวอย่างการเขียน goto
https://stackoverflow.com/questions/37515901/where-does-goto-eof-return-to
    แนะนำเว็บ (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

http://goo.gl/72BPC