Ping setiap alamat IP dalam file teks?

9

Katakanlah saya punya file teks di sini dengan beberapa nama komputer (setiap baris == 1 nama):

computerA
computerB
computerC
...

Apakah mungkin untuk membuat file batch yang melakukan ping semua komputer ini? Dan sebenarnya ping adalah output besar. Saya tidak memerlukan timeatau informasi lainnya; Saya hanya ingin tahu terjangkau atau tidak. Ada ide?


Ini bekerja sekarang! Masalahnya seperti kata rubah, bahwa saya menamai file batch saya sebagai ping.batdan ping juga merupakan perintah sehingga ini tidak berhasil. Saya mengganti nama file batch saya dan sekarang semuanya baik-baik saja.

sabiabi
sumber
1
Lihatlah forperintahnya, terutama mode parsing file.
Damien_The_Unbeliever

Jawaban:

12

Coba ini:

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

Jika Anda harus menggunakan nama file atau jalur dengan spasi atau karakter aneh maka Alih-alih (computerlist.txt)menggunakan( ' type "c:\folder\computer file.txt" ' )

foxidrive
sumber
Saya melihat cmd bermunculan sangat cepat dan kemudian hilang. Bahkan dengan jeda atau tidur pada akhirnya saya tidak melihat keluaran apa pun.
sabiabi
Coba kode yang diedit di atas yang mencakup respons OK.
Tidak ada perubahan sama sekali, ini aneh. Saya menyalin persis kode yang sama (ok saya mengubah nama file) ketika Anda diposting di sana ke dalam file teks -> Saya menyimpan ini sebagai file .bat dan setelah itu saya memulai file .bat -> cmd muncul dan kemudian hilang tanpa output apa pun. Saya menggunakan win xp, apakah ini bisa menjadi masalah?
sabiabi
Path \ namafile Anda mungkin mengandung spasi. Alih-alih menggunakan (computerlist.txt) ('ketik "c: \ folder \ computer file.txt"')
3
Itu salahmu. Selalu ingat bahwa ketika menamai file batch Anda harus menghindari menggunakan nama perintah. Dalam kasus Anda, perintah ping di dalam file batch mengeksekusi file batch ping dan bukan perintah 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

Keluaran:

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

[+] Pinging: ffff
    [FAILED]
ElektroStudios
sumber
Ketika saya memulai .bat saya melihat output [+] Ping: computerA, tetapi kemudian jendela menghilang.
sabiabi
Anda telah memutakhirkan skrip saya tanpa perubahan?
ElektroStudios
Yah saya mengubah nama file, tetapi hanya itu
sabiabi
@sabiabi: mulai file batch "secara manual" dari prompt perintah yang ada, Anda akan dapat membaca pesan kesalahan. Jangan "klik dua kali" file batch yang harus Anda uji.
a_horse_with_no_name
@a_horse_with_no_name jika saya memulai file .bat via cmd (ping.bat) -> tidak ada jendela baru dan cmd saya menutup sendiri tanpa pesan apa pun
sabisabi
1

Alternatif yang mungkin ingin Anda lihat adalah menggunakan 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"
    }
}

Ganti kontestan C: \ Menginstal \ ComputerList.txt dan Anda sedang pergi :)

masukkan deskripsi gambar di sini

Fazer87
sumber
0

Saya membuat alat ping yang menggunakan file konfigurasi untuk mengatur ip mana yang akan di-ping dan membuat jendela hingga 12 cmd dan menempatkannya berdampingan di layar Anda. Setiap jendela memiliki deskripsi dalam judul, juga dari file konfigurasi.

Ini mendeteksi secara otomatis ukuran layar Anda, tetapi saat ini hanya mendukung 1920x1080 dan 1600x900. Anda dapat membuat lebih banyak resolusi secara manual. Lihat credit.txt untuk info.

HellFires Pingtest v1.0

Tuan HellFire
sumber
0

Anda dapat mencoba menggunakan alat yang saya kembangkan - ccmd - untuk membantu tugas serupa, menjalankan perintah terminal apa pun terhadap sejumlah target, target dapat diberikan dalam file teks csv seperti:
#ini adalah baris komentar
#target, deskripsi, command (default - ping)
8.8.8.8
1.1.1.1
#dalam perintah di bawah ini {target} akan diganti dengan 8.8.4.4
8.8.4.4, google DNS, ping -n 1 -w 500 {target}
192.168.1.0/30, my subnet
bbc.com, ini adalah situs berita bbc

simpan file di atas dalam name.txt dan arahkan script ke sana dengan opsi -s, secara default akan menjalankan perintah ping jika tidak ada perintah lain yang diberikan.
Jalankan dengan:
ccmd.exe -s name.txt -b 10 -c 30
mengungkapkan output itu: https://i.stack.imgur.com/23zxQ.png

skrip ditulis dengan python tetapi memiliki ccmd.exe vesion, yang dapat dijalankan di windows secara langsung. Secara default, log perintah akan disimpan di folder ./LOG/.

Sumber: https://github.com/apraksim/ccmd

apraksim
sumber