Pingować każdy adres IP w pliku tekstowym?

9

Powiedzmy, że mam tutaj plik tekstowy z niektórymi nazwami komputerów (każda linia == 1 nazwa):

computerA
computerB
computerC
...

Czy można utworzyć plik wsadowy, który pinguje wszystkie te komputery? I tak naprawdę ping to duży wynik. Nie potrzebuję tych timelub innych informacji; Chciałbym tylko wiedzieć, czy jest osiągalny czy nie. Jakieś pomysły?


Już działa! Problem był taki, jak powiedział lis, że nazwałem swój plik wsadowy jako, ping.bata ping to także polecenie, więc to nie zadziałało. Zmieniłem nazwę pliku wsadowego i teraz wszystko jest w porządku.

Sabisabi
źródło
1
Spójrz na forpolecenie, szczególnie tryb analizy plików.
Damien_The_Unbeliever

Odpowiedzi:

12

Spróbuj tego:

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

Jeśli musisz użyć nazwy pliku lub ścieżki ze spacjami lub znakami nieparzystymi, zamiast tego (computerlist.txt)użyj( ' type "c:\folder\computer file.txt" ' )

foxidrive
źródło
Widzę, że cmd pojawia się bardzo krótko, a potem go nie ma. Nawet z pauzą lub snem na końcu nie widzę żadnego wyjścia.
sabisabi
Wypróbuj edytowany kod, który zawiera odpowiedź OK.
Żadnych zmian, to dziwne. Kopiuję dokładnie ten sam kod (ok, zmieniam nazwę pliku), jak tam napisałeś, do pliku tekstowego -> Zapisuję to jako plik .bat, a następnie uruchamiam plik .bat -> cmd wyskakuje, a potem go nie ma dowolne wyjście. Używam Win XP, czy to może być problem?
sabisabi
Twoja ścieżka \ nazwa pliku prawdopodobnie zawiera spacje. Zamiast (computerlist.txt) użyj ('type' c: \ folder \ computer file.txt "')
3
To jest twój błąd. Zawsze pamiętaj, że nazywając plik wsadowy, należy unikać używania nazwy polecenia. W twoim przypadku polecenie ping w pliku wsadowym wykonuje plik wsadowy ping, a nie polecenie 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

Wynik:

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

[+] Pinging: ffff
    [FAILED]
ElektroStudios
źródło
Kiedy uruchamiam .bat, widzę wynik [+] Pingowanie: komputerA, ale potem okno znika.
sabisabi
Zrobiłeś kopię mojego skryptu bez kilku zmian?
ElektroStudios
Cóż, zmieniłem nazwę pliku, ale to wszystko
sabisabi,
@ Sabisabi: uruchom plik wsadowy „ręcznie” z istniejącego wiersza polecenia, będziesz mógł odczytać komunikat o błędzie. Nie klikaj dwukrotnie plików wsadowych, które musisz przetestować.
a_horse_w_no_name
@ a_horse_w_nazwie, jeśli uruchomię plik .bat przez cmd (ping.bat) -> nie ma nowego okna, a moje cmd zamyka się bez żadnej wiadomości
sabisabi
1

Alternatywą, na którą warto spojrzeć, jest użycie programu 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"
    }
}

Wymień zawartość C: \ Instalacje \ ComputerList.txt i jesteś daleko :)

wprowadź opis zdjęcia tutaj

Fazer87
źródło
0

Stworzyłem narzędzie ping, które używa pliku konfiguracyjnego do ustawiania, które ip mają pingować oraz tworzy do 12 cmd okien i umieszcza je obok siebie na ekranie. Każde okno ma opis w tytule, również z pliku konfiguracyjnego.

Automatycznie wykrywa rozmiar ekranu, ale obecnie obsługuje tylko 1920 x 1080 i 1600 x 900. Możesz jednak utworzyć więcej rozdzielczości ręcznie. Więcej informacji na stronie credits.txt.

HellFires Pingtest v1.0

Lord HellFire
źródło
0

Możesz spróbować użyć opracowanego przeze mnie narzędzia - ccmd - do pomocy w podobnych zadaniach, uruchamia on dowolne polecenie terminalu w stosunku do wielu celów, cele można podać w pliku tekstowym csv, takim jak:
#to wiersz komentarza
#cel, opis, polecenie (domyślnie - ping)
8.8.8.8
1.1.1.1
#in poniżej polecenia {cel} zostanie zastąpione przez 8.8.4.4
8.8.4.4, Google DNS, ping -n 1 -w 500 {cel}
192.168.1.0/30, mój podsieć
bbc.com, to jest strona z wiadomościami bbc

zapisz powyższy plik w name.txt i wskaż skrypt na opcję -s, domyślnie uruchomi polecenie ping, jeśli nie zostanie podane żadne inne polecenie.
Uruchom go za pomocą:
ccmd.exe -s name.txt -b 10 -c 30
ujawnia ten wynik: https://i.stack.imgur.com/23zxQ.png

skrypt napisany w Pythonie, ale ma wersję ccmd.exe, którą można uruchomić bezpośrednio w systemie Windows. Domyślnie szczegóły komendy rejestrują dane wyjściowe zapisane w folderze ./LOG/.

Źródło: https://github.com/apraksim/ccmd

apraksim
źródło