ทำความรู้จักกับคำสั่ง Ping ใน Command Prompt
คำสั่ง ping เป็นเครื่องมือพื้นฐานที่ใช้ในการทดสอบการเชื่อมต่อเครือข่าย โดยส่งแพ็กเก็ตข้อมูลไปยังโฮสต์เป้าหมายและรอรับการตอบกลับ วิธีนี้ช่วยให้ผู้ดูแลระบบหรือผู้ใช้งานทั่วไปสามารถตรวจสอบว่าเครื่องนั้น ๆ สามารถติดต่อกับเครื่องอื่นในเครือข่ายได้หรือไม่ ปกติแล้วเรามักจะพิมพ์คำสั่ง ping ตามด้วยหมายเลข IP หรือชื่อโดเมนทีละเครื่อง แต่เมื่อต้องตรวจสอบหลายเครื่องพร้อมกัน การทำทีละเครื่องอาจใช้เวลานานและไม่สะดวก ดังนั้นจึงมีเทคนิคการใช้คำสั่ง CMD เพื่อ ping หลายเครื่องในคราวเดียว ซึ่งจะช่วยประหยัดเวลาและเพิ่มประสิทธิภาพในการทำงาน
วิธีใช้ FOR Loop เพื่อ Ping หลาย IP พร้อมกัน
วิธีที่ง่ายที่สุดในการ ping หลายเครื่องพร้อมกันใน Command Prompt คือการใช้คำสั่ง FOR /L ซึ่งเป็นลูปที่ทำงานวนซ้ำตามช่วงตัวเลขที่กำหนด โดยรูปแบบคำสั่งพื้นฐานมีดังนี้
FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i
คำสั่งนี้จะทำการ ping ไปยัง IP ตั้งแต่ 192.168.0.1 ถึง 192.168.0.254 โดยแต่ละครั้งจะส่งคำขอ ping เพียง 1 ครั้ง (-n 1) และใช้ %i เป็นตัวแปรแทนเลขท้ายของ IP เมื่อรันคำสั่งใน CMD โดยตรง ตัวแปร %i จะทำงานได้ทันที แต่ถ้าต้องการนำไปใช้ในไฟล์แบตช์ (.bat) ต้องใช้ %%i แทน วิธีนี้ช่วยให้คุณไม่ต้องพิมพ์คำสั่ง ping ถึง 254 ครั้งด้วยตนเอง

อย่างไรก็ตาม การรันลูปแบบนี้จะทำงานตามลำดับทีละ IP ซึ่งอาจใช้เวลาพอสมควรหากเครือข่ายมีขนาดใหญ่ แต่ยังคงเป็นวิธีที่สะดวกและไม่ต้องติดตั้งโปรแกรมเพิ่มเติม คุณสามารถปรับช่วง IP หรือเพิ่มจำนวนครั้งในการ ping ได้ตามต้องการ เช่น เปลี่ยน -n 1 เป็น -n 2 เพื่อส่ง 2 ครั้ง หรือเปลี่ยนช่วงจาก (1,1,254) เป็น (100,1,150) เพื่อจำกัดเฉพาะ IP ที่สนใจ
การกรองผลลัพธ์ด้วย FIND เพื่อดูเฉพาะเครื่องที่ตอบกลับ
เมื่อรันลูป ping หลาย IP ผลลัพธ์ที่ได้จะมีทั้งบรรทัดที่แสดงการตอบกลับและบรรทัดที่แสดงว่าไม่สามารถเชื่อมต่อได้ การดูผลลัพธ์ทั้งหมดอาจทำให้สับสนและเสียเวลา เพื่อแก้ปัญหานี้ เราสามารถใช้คำสั่ง FIND ในการกรองเฉพาะบรรทัดที่มีข้อความ "Reply" ซึ่งบ่งบอกว่าเครื่องนั้นตอบกลับได้สำเร็จ
FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i | FIND /i "Reply"
เครื่องหมาย | (pipe) ใช้ในการส่งต่อผลลัพธ์ของคำสั่ง ping ไปยัง FIND ซึ่งจะค้นหาข้อความ "Reply" แบบไม่คำนึงถึงตัวพิมพ์เล็กใหญ่ (/i) ทำให้เราเห็นเฉพาะ IP ที่ตอบกลับเท่านั้น นอกจากนี้ คุณยังสามารถเปลี่ยนเป็น "TTL" หรือ "from" เพื่อกรองในรูปแบบอื่นได้ วิธีนี้ช่วยให้การตรวจสอบเครือข่ายทำได้รวดเร็วขึ้น โดยเฉพาะเมื่อต้องการหาเครื่องที่เปิดอยู่ภายในช่วง IP ใดช่วงหนึ่ง

นอกจากนั้น คุณยังสามารถบันทึกผลลัพธ์ที่กรองแล้วลงในไฟล์ข้อความได้โดยใช้เครื่องหมาย >> ตามด้วยชื่อไฟล์ เช่น
FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i | FIND /i "Reply" >> result.txt
การบันทึกไฟล์จะช่วยให้คุณสามารถนำข้อมูลไปวิเคราะห์หรืออ้างอิงภายหลังได้ โดยไม่ต้องเปิดหน้าต่าง CMD ทิ้งไว้ตลอดเวลา
ตารางเปรียบเทียบวิธีการ Ping หลายเครื่องพร้อมกัน
เพื่อให้เห็นภาพรวมของแต่ละวิธี เราได้รวบรวมตารางเปรียบเทียบระหว่างการใช้ FOR Loop ใน CMD, การใช้เครื่องมือ fping บน Linux, และการใช้ PowerShell Jobs บน Windows

| วิธี | ข้อดี | ข้อเสีย | ตัวอย่างคำสั่งพื้นฐาน |
|---|---|---|---|
| FOR Loop ใน CMD | ไม่ต้องติดตั้งเพิ่ม ใช้งานง่ายบน Windows ทุกเวอร์ชัน | ทำงานตามลำดับ ช้ากว่าการทำแบบขนาน กรองผลลัพธ์ต้องใช้ FIND เสริม | FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i |
| fping (Linux/Unix) | ping พร้อมกันหลายเครื่องในครั้งเดียว แสดงผลรวดเร็ว มีตัวเลือกช่วง IP | ต้องติดตั้งเพิ่ม ไม่มีในระบบปฏิบัติการ Windows โดยค่าเริ่มต้น | fping -g 192.168.0.1/24 |
| PowerShell Jobs | ทำงานแบบขนาน รองรับการทำต่อเนื่องและบันทึกเวลาที่แน่นอน | ต้องมีความรู้ PowerShell พื้นฐาน อาจซับซ้อนสำหรับผู้เริ่มต้น | Start-Job { ping -n 1 192.168.0.1 } |
ข้อควรระวังและเคล็ดลับในการใช้งาน
ก่อนที่จะใช้คำสั่ง ping หลายเครื่องพร้อมกัน ควรคำนึงถึงปัจจัยบางประการเพื่อให้ได้ผลลัพธ์ที่แม่นยำและไม่สร้างภาระให้กับเครือข่ายมากเกินไป
- การตั้งค่าจำนวนครั้งในการ ping: ควรใช้ -n 1 หรือ -n 2 เพื่อลดปริมาณแพ็กเก็ต โดยเฉพาะเมื่อตรวจสอบช่วง IP ขนาดใหญ่
- การหน่วงเวลาระหว่างการ ping: ใน FOR Loop ปกติจะทำงานต่อเนื่องโดยไม่มีการหน่วง หากต้องการเว้นระยะ สามารถเพิ่มคำสั่ง timeout /t 1 >nul หลังจากคำสั่ง ping เพื่อให้รอ 1 วินาทีก่อน ping IP ถัดไป
- การรัน CMD ในฐานะผู้ดูแลระบบ: สำหรับบางเครือข่ายหรือการ ping ผ่านไฟร์วอลล์ อาจต้องรัน CMD ในฐานะ Administrator เพื่อให้คำสั่งทำงานได้สมบูรณ์
- การตรวจสอบสิทธิ์การเข้าถึง: หากคุณ ping เครื่องในระบบโดเมนหรือเครือข่ายที่มีการรักษาความปลอดภัยสูง อาจถูกปฏิเสธการตอบกลับจากบางเครื่อง
- การใช้ไฟล์ข้อความเพื่อเก็บบันทึก: ควรตั้งชื่อไฟล์ให้ไม่ซ้ำกันหรือเพิ่มวันที่ในชื่อไฟล์เพื่อป้องกันการเขียนทับข้อมูลเดิม
เคล็ดลับเพิ่มเติมคือ คุณสามารถรวมคำสั่ง FIND เพื่อกรองเฉพาะบรรทัดที่ขึ้นต้นด้วย "Reply from" ซึ่งจะแสดง IP ที่ตอบกลับอย่างชัดเจน หรือใช้ FINDSTR เพื่อรองรับการค้นหารูปแบบที่ซับซ้อนยิ่งขึ้น เช่น
FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i | FINDSTR /i "Reply"
นอกจากนี้ หากคุณต้องการทราบว่าเครื่องใดไม่ตอบกลับ คุณสามารถใช้ FIND /i "Request timed out" แทน เพื่อดูเฉพาะ IP ที่ไม่สามารถเชื่อมต่อได้

การประยุกต์ใช้กับเครือข่ายขนาดใหญ่และการทำงานอัตโนมัติ
ในสถานการณ์ที่ต้องตรวจสอบเครือข่ายที่มีหลายร้อยหรือหลายพันเครื่อง การใช้ FOR Loop เพียงอย่างเดียวอาจไม่เพียงพอ เนื่องจากต้องใช้เวลานานและอาจทำให้ Command Prompt ทำงานหนัก ทางเลือกหนึ่งคือการเขียนสคริปต์ด้วย PowerShell ซึ่งรองรับการทำงานแบบขนาน (parallel) โดยใช้ Start-Job หรือ ForEach-Object -Parallel ใน PowerShell เวอร์ชันใหม่ ตัวอย่างเช่น
1..254 | ForEach-Object -Parallel { ping -n 1 "192.168.0.$_" } -ThrottleLimit 50
คำสั่งนี้จะ ping IP 1 ถึง 254 แบบขนาน โดยจำกัดจำนวนงานพร้อมกันที่ 50 งาน ทำให้เร็วขึ้นมากเมื่อเทียบกับลูปแบบลำดับ อย่างไรก็ตาม พารามิเตอร์ -Parallel สามารถใช้ได้ใน PowerShell 7 ขึ้นไปเท่านั้น
สำหรับผู้ที่ใช้ Linux หรือระบบ Unix-like เครื่องมือ fping เป็นตัวเลือกที่นิยมมาก เนื่องจากสามารถระบุช่วง IP ในรูปแบบ CIDR หรือรายการ IP ในไฟล์ข้อความได้ ตัวอย่างคำสั่ง fping -g 192.168.0.1/24 จะ ping ทุก IP ใน subnet นั้นทันทีและแสดงผลเฉพาะเครื่องที่ตอบกลับหรือไม่ตอบกลับตามตัวเลือก

นอกจากนี้ การนำผลลัพธ์ไปต่อยอดด้วยการส่งอีเมลแจ้งเตือนหรือบันทึกลงฐานข้อมูลก็เป็นไปได้ โดยใช้สคริปต์ร่วมกับคำสั่ง ping เพื่อสร้างระบบตรวจสอบเครือข่ายอัตโนมัติ
ลิงก์อ้างอิงและแหล่งข้อมูลเพิ่มเติม
สำหรับผู้ที่ต้องการศึกษาเพิ่มเติมเกี่ยวกับคำสั่ง ping ใน Windows และเทคนิคขั้นสูง สามารถดูเอกสารอย่างเป็นทางการจาก Microsoft ได้ที่ Microsoft Learn: คำสั่ง ping ซึ่งอธิบายพารามิเตอร์และการใช้งานแบบละเอียด
นอกจากนี้ ยังมีคำแนะนำจากผู้ใช้ใน Stack Exchange ที่กล่าวถึงการกรองผลลัพธ์ด้วย FIND และการใช้งาน FOR Loop อย่างมีประสิทธิภาพ ศึกษาเพิ่มเติมได้ที่ SuperUser: วิธี ping ช่วง IP พร้อมกัน
ส่วนอ้างอิง
ข้อมูลในบทความนี้รวบรวมจากแหล่งที่มาที่น่าเชื่อถือดังนี้
Microsoft Corporation. Windows Command Reference: ping. เข้าถึงเมื่อ 2025 จาก https://learn.microsoft.com/pt-br/windows-server/administration/windows-commands/ping
Stack Exchange Network. How can I ping a range of IP addresses simultaneously? เข้าถึงเมื่อ 2025 จาก https://qastack.com.br/superuser/45687/how-can-i-ping-a-range-of-ip-addresses-simultaneously-closed
Wel. R. Braga. fping: um ping para múltiplos hosts. เข้าถึงเมื่อ 2025 จาก https://blog.welrbraga.eti.br/fping-um-ping-para-multiplos-hosts/
Reddit PowerShell Community. How to do continuous ping to multiple IPs and log results. เข้าถึงเมื่อ 2025 จาก https://www.reddit.com/r/PowerShell/comments/17949iu/how_to_do_continuous_ping_to_multiple_ips_and/





