Проверка связи с несколькими компьютерами и добавление текста

Я довольно новичок в этом, поэтому, пожалуйста, потерпите меня, и если вам нужна дополнительная информация от меня, пожалуйста, скажите. Заранее спасибо за помощь.

У меня есть этот код, который пингует разные компьютеры, а затем возвращается обратно, если они онлайн/офлайн. Я хотел знать, можете ли вы добавить еще один столбец после того, как файл bat запустил тест ping, чтобы рядом с ним было имя компьютера.

 @echo off
 if exist C:\tools\computers.txt goto Label1 
 echo.
 echo Cannot find C:\tools\computers.txt
 echo.
 Pause 
 goto :eof

:Label1 
 echo PingTest executed on %date% at %time% > C:\tools\z.txt
 echo ================================================= >> C:\tools\z.txt
 for /f %%i in (C:\tools\computers.txt) do call :Sub %%i notepad C:\tools\z.txt 
 goto :eof

:Sub
echo Testing %1 set state=alive ping -n 1 %1 | find /i "bytes=" || set state=dead echo %1 is %state% >> C:\tools\z.txt

Файл bat создает документ, который показывает следующее;

PingTest выполнен 28.07.2016 в 13:10:28

99.1.82.28 жив

99.1.82.100 жив

ЭСТ.


Если возможно, я бы хотел, чтобы файл bat запускался, чтобы он отображал это;

Файл bat создает документ, который показывает следующее;

PingTest выполнен 28.07.2016 в 13:10:28

Компьютер 1: 99.1.82.28 жив

Компьютер 2: 99.1.82.100 жив

ЭСТ.

--

Был бы признателен за любую помощь и руководство по этому поводу.

Спасибо.


person Hiten Pankhania    schedule 28.07.2016    source источник
comment
Взгляните на этот код ==> stackoverflow.com/questions/12408673/   -  person Hackoo    schedule 28.07.2016


Ответы (1)


Вы можете попробовать это решение:

@echo off
Title Ping Test
set "URLS=URLS.txt"
set "LogFile=PingResults.txt"
If exist %LogFile% Del %LogFile%
(
    echo ******************************************************
    echo   PingTest executed on %Date% @ Time %Time% 
    echo ******************************************************
    echo(
) > %LogFile%

Setlocal EnableDelayedExpansion
for /f "usebackq delims=" %%a in ("%URLS%") do (
    for /f "tokens=2 delims=[]" %%b in ('ping -n 1 %%a') do set "ip=%%b"
        ping -n 1 %%a>nul && set "msg=%%a : !ip! ALive ok" || set "msg=%%a : !ip! Dead failed to respond"
        echo !msg!
        echo !msg! >> %LogFile%
    ) 
)
EndLocal
Start "" %LogFile%
pause>nul & exit

РЕДАКТИРОВАНИЕ: 29.07.2016, 12:48

Еще одна версия с несколькими цветами. Особая благодарность ICARUS за цветовую функцию (-_°).

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

@echo off
Rem Special thanks goes to Iracus for the color function (-_°)
mode con cols=60 lines=20
Title Multi-Ping hosts Tester with Multi-colors by Hackoo
set "URLS=URLS.txt"
set "LogFile=PingResults.txt"
If exist %LogFile% Del %LogFile%
call :init
echo(
call :color 0E "------- Ping Status of Computers hosts -------" 1
echo(
(
    echo ******************************************************
    echo   PingTest executed on %Date% @ Time %Time% 
    echo ******************************************************
    echo(
) > %LogFile%
Setlocal EnableDelayedExpansion
for /f "usebackq delims=" %%a in ("%URLS%") do (
    for /f "tokens=2 delims=[]" %%b in ('ping -n 1 %%a') do set "ip=%%b"
        ping -n 1 %%a>nul && set "msg=%%a - !ip! ALive ok" && Call :Color 0A "!msg!" 1 || set "msg=%%a - !ip! Dead failed to respond" && Call :Color 0C "!msg!" 1
        echo !msg! >> %LogFile%
    ) 
)
EndLocal
Start "" %LogFile%
pause>nul & exit

:init
prompt $g
for /F "delims=." %%a in ('"prompt $H. & for %%b in (1) do rem"') do set "BS=%%a"
exit /b

:color
set nL=%3
if not defined nL echo requires third argument & pause > nul & goto :eof
if %3 == 0 (
    <nul set /p ".=%bs%">%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof
) else if %3 == 1 (
    echo %bs%>%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof
)
exit /b

ИЗМЕНИТЬ: обновление от 23 августа 2016 г.

http://pastebin.com/zjYwSqUM

person Hackoo    schedule 29.07.2016