Пінг кожної IP-адреси у текстовому файлі?


9

Скажімо, у мене тут текстовий файл з деякими іменами комп'ютерів (кожен рядок == 1 ім'я):

computerA
computerB
computerC
...

Чи можливо створити пакетний файл, який записує всі ці комп'ютери? І насправді пінг - це великий вихід. Мені не потрібна та timeчи інша інформація; Мені просто хотілося б дізнатися про доступність чи ні. Будь-які ідеї?


Це працює зараз! Проблема була так, як Фокс сказав, що я назвав свій пакетний файл як ping.batі ping - це також команда, тому це не вийшло. Я перейменував свій пакетний файл і тепер все добре.


1
Подивіться на forкоманду, особливо режим розбору файлів.
Damien_The_Unbeliever

Відповіді:


12

Спробуйте це:

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

Якщо вам доведеться використовувати ім’я або шлях з пробілами або непарними символами, то замість цього (computerlist.txt)використовувати( ' type "c:\folder\computer file.txt" ' )


Я бачу, що cmd спливає дуже скоро, і тоді він пішов. Навіть з паузою або сном наприкінці я не бачу жодного результату.
сабісабі

Спробуйте відредагований код, який містить відповідь ОК.

Жодних змін немає, це дивно. Я копіюю той самий код (нормально, я змінюю ім'я файлу), який ви розмістили там, у текстовому файлі -> я зберігаю це як .bat і після цього запускаю .bat файл -> cmd, що спливає, а потім він проходить без будь-який вихід. Я використовую win xp, це може бути проблемою?
сабісабі

Ваш шлях \ ім'я файлу, ймовірно, містить пробіли. Замість (computerlist.txt) використовуйте ('type' c: \ folder \ computer file.txt "')

3
Це ваша помилка. Завжди пам’ятайте, що при іменуванні пакетного файлу вам слід уникати використання імені команди. У вашому випадку команда ping у пакетному файлі виконує пакетний файл ping, а не команду 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

Вихід:

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

[+] Pinging: ffff
    [FAILED]

Коли я запускаю .bat, я бачу вихід [+] Pinging: computerA, але тоді вікно зникає.
сабісабі

Ви озвучили мій сценарій, як без кількох змін?
ElektroStudios

Ну я змінив назву файлу, але це все
sabisabi

@sabisabi: запустіть пакетний файл "вручну" з існуючої командної лінії, ви зможете прочитати повідомлення про помилку. Не "двічі клацніть" пакетні файли, які вам доведеться перевірити.
a_horse_with_no_name

@a_horse_with_no_name, якщо я запускаю файл .bat через cmd (ping.bat) -> немає нового вікна, і мій cmd закривається без жодного повідомлення
sabisabi

1

Ви можете поглянути на альтернативу: використовувати 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"
    }
}

Замініть контакти C: \ Installs \ ComputerList.txt і ви їдете :)

введіть тут опис зображення


0

Я створив інструмент ping, який використовує файл конфігурації для встановлення ip-файлів на ping і створює вікна до 12 смд і розміщує їх поруч на екрані. Кожне вікно має опис у заголовку, також із конфігураційного файла.

Він автоматично визначає розмір екрана, але наразі підтримує лише 1920x1080 та 1600x900. Однак ви можете створити більше резолюцій вручну. Для отримання інформації див.

HellFires Pingtest v1.0


0

Ви можете спробувати скористатись інструментом, який я розробив - ccmd - для вирішення подібних завдань, він виконує будь-яку команду терміналу проти ряду цілей, цілі можна вказати у текстовому файлі csv на зразок:
# це рядок коментарів
#target, description, команда (за замовчуванням - ping)
8.8.8.8
1.1.1.1
#in нижче команда {target} буде замінена на 8.8.4.4
8.8.4.4, google DNS, ping -n 1 -w 500 {target}
192.168.1.0/30, мій підмережа
bbc.com, це сайт новин bbc

збережіть вище файл у name.txt та вкажіть на нього скрипт за допомогою параметра -s, за замовчуванням він запустить команду ping, якщо інша команда не задана.
Запустіть його:
ccmd.exe -s name.txt -b 10 -c 30
виявляє, що вихід: https://i.stack.imgur.com/23zxQ.png

сценарій, написаний на python, але має ccmd.exe, який можна запустити безпосередньо на Windows. За замовчуванням деталі команд журнали виведення даних зберігаються у папці ./LOG/.

Джерело: https://github.com/apraksim/ccmd

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.