Ping mỗi địa chỉ IP trong một tệp văn bản?


9

Hãy nói rằng tôi có một tệp văn bản với một số tên máy tính (mỗi dòng == 1 tên):

computerA
computerB
computerC
...

Có thể tạo một tệp bó đang ping tất cả các máy tính này không? Và thực sự một ping là một sản lượng lớn. Tôi không cần timehoặc thông tin khác; Tôi chỉ muốn biết có thể tiếp cận hay không. Có ý kiến ​​gì không?


Nó đang làm việc bây giờ! Vấn đề giống như con cáo đã nói, rằng tôi đã đặt tên cho tệp bó của mình ping.batvà ping cũng là một lệnh nên việc này không thành công. Tôi đã đổi tên tập tin lô của tôi và bây giờ mọi thứ đều ổn.


1
Nhìn vào forlệnh, đặc biệt là chế độ phân tích tệp.
Damien_The_Unbeliever

Câu trả lời:


12

Thử cái này:

@echo off
for /f "delims=" %%a in (computerlist.txt) do ping -n 1 %%a >nul && (echo %%a ok) || (echo %%a failed to respond) 
pause

Nếu bạn phải sử dụng tên tệp hoặc đường dẫn có dấu cách hoặc ký tự lẻ thì Thay vì (computerlist.txt)sử dụng( ' type "c:\folder\computer file.txt" ' )


Tôi thấy cmd đang xuất hiện rất nhanh và sau đó nó đã biến mất. Ngay cả khi tạm dừng hoặc ngủ ở cuối, tôi không thấy bất kỳ đầu ra nào.
sabisabi

Hãy thử mã được chỉnh sửa ở trên bao gồm phản hồi OK.

Không có thay đổi gì cả, điều này thật kỳ lạ. Tôi sao chép chính xác cùng mã (ok tôi thay đổi tên tệp) khi bạn đăng ở đó vào tệp văn bản -> Tôi lưu mã này dưới dạng .bat và sau đó tôi khởi động tệp .bat -> cmd bật lên và sau đó nó biến mất mà không có bất kỳ đầu ra. Tôi sử dụng win xp, đây có thể là một vấn đề không?
sabisabi

Đường dẫn \ tên tệp của bạn có thể chứa khoảng trắng. Thay vì (computerlist.txt), hãy sử dụng ('gõ "c: \ thư mục \

3
Đó là sai lầm của bạn. Luôn nhớ rằng khi đặt tên tệp bó, bạn nên tránh sử dụng tên của lệnh. Trong trường hợp của bạn, lệnh ping bên trong tệp bó đang thực thi tệp ping ping chứ không phải lệnh ping.

4
@Echo OFF

For /F "Usebackq Delims=" %%# in (
    "List.txt"
) do (
    Echo+
    Echo [+] Pinging: %%#

    Ping -n 1 "%%#" 1>nul && (
        Echo     [OK]) || (
        Echo     [FAILED])
)

Pause&Exit

Đầu ra:

[+] Pinging: www.google.com
    [OK]

[+] Pinging: ffff
    [FAILED]

Khi tôi khởi động .bat tôi thấy đầu ra [+] Pinging: computerA, nhưng sau đó cửa sổ biến mất.
sabisabi

Bạn đã xem kịch bản của tôi như là không có nhiều thay đổi?
ElektroStudios

Chà, tôi đã thay đổi tên của tập tin, nhưng đó là nó
sabisabi

@sabisabi: bắt đầu tệp bó "thủ công" từ dấu nhắc lệnh hiện có, bạn sẽ có thể đọc thông báo lỗi. Đừng "nhấp đúp chuột" vào các tệp mà bạn phải kiểm tra.
a_horse_with_no_name

@a_horse_with_no_name nếu tôi khởi động tệp .bat qua cmd (ping.bat) -> không có cửa sổ mới và cmd của tôi sẽ tự đóng mà không có bất kỳ tin nhắn nào
sabisabi

1

Một cách khác bạn có thể muốn xem xét là sử dụng PowerShell:

cls;
ForEach ($targetComputer in (Get-Content C:\installs\computerlist.txt)) {
    if (Test-Connection -ComputerName $targetComputer -Count 1 -Quiet) {
        "$targetComputer - Ping OK"
    } else {
        "$targetComputer - Ping FAIL"
    }
}

Thay thế các phần tử của C: \ Cài đặt \ ComputerList.txt và bạn sẽ đi :)

nhập mô tả hình ảnh ở đây


0

Tôi đã tạo một công cụ ping sử dụng tệp cấu hình để đặt ip của ping nào và tạo tối đa 12 cmd windows và đặt chúng cạnh nhau trên màn hình của bạn. Mỗi cửa sổ có một mô tả trong tiêu đề, cũng từ tệp cấu hình.

Nó tự động phát hiện kích thước màn hình của bạn, nhưng hiện tại chỉ hỗ trợ 1920x1080 và 1600x900. Bạn có thể tạo thêm độ phân giải bằng tay mặc dù. Xem tín dụng.txt để biết thông tin.

Địa ngục Pingtest v1.0


0

Bạn có thể thử sử dụng công cụ tôi đã phát triển - ccmd - để trợ giúp với các tác vụ tương tự, nó chạy bất kỳ lệnh đầu cuối nào chống lại một số mục tiêu, mục tiêu có thể được đưa ra trong tệp văn bản csv như:
#this là một dòng nhận xét
#target, mô tả, lệnh (mặc định - ping)
8.8.8.8
1.1.1.1
#in bên dưới lệnh {target} sẽ được thay thế bằng 8.8.4.4 8.8.4.4
, google DNS, ping -n 1 -w 500 {target}
192.168.1.0/30, của tôi mạng con
bbc.com, đây là trang tin tức bbc

lưu tệp ở trên trong name.txt và trỏ tập lệnh vào tùy chọn -s, theo mặc định, nó sẽ chạy lệnh ping nếu không có lệnh nào khác được đưa ra.
Chạy nó với:
ccmd.exe -s name.txt -b 10 -c 30
cho thấy đầu ra đó: https://i.stack.imgur.com/23zxQ.png

tập lệnh được viết trên python nhưng có ccmd.exe vesion, có thể chạy trực tiếp trên windows. Theo mặc định chi tiết lệnh ghi nhật ký đầu ra được lưu trong thư mục ./LOG/.

Nguồn: https://github.com/apraksim/ccmd

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.