8

Допустим, у меня есть текстовый файл с некоторыми именами компьютеров (каждая строка == 1 имя):

computerA
computerB
computerC
...

Можно ли создать командный файл, который пропингует все эти компьютеры? И на самом деле пинг это большой выход. Мне не нужно time или другая информация; Я просто хотел бы знать, достижимы или нет. Есть идеи?


Теперь это работает! Проблема заключалась в том, что, как сказал Фокс, я назвал свой командный файл ping.bat а ping - тоже команда, так что это не сработало. Я переименовал свой командный файл, и теперь все в порядке.

5 ответов5

10

Попробуй это:

@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" ' )

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]
0

Вы можете попробовать использовать инструмент, который я разработал, - ccmd - для решения подобных задач, он запускает любую терминальную команду для нескольких целей, цели могут быть заданы в текстовом файле csv, например:
# это строка комментария
# цель, описание, команда (по умолчанию - ping)
8.8.8.8
1.1.1.1
# ниже команда {цель} будет заменена на 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

0

Альтернатива, на которую вы, возможно, захотите взглянуть, - это использование 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 окон cmd и размещает их рядом на экране. Каждое окно имеет описание в заголовке, также из файла конфигурации.

Он автоматически определяет размер экрана, но в настоящее время поддерживает только 1920x1080 и 1600x900. Вы можете создать больше разрешений вручную, хотя. См. Credits.txt для информации.

HellFires Pingtest v1.0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .