batch file - Hacer ping en varias PC y agregar texto



batch-file (1)

Soy bastante nuevo en esto, así que por favor tengan paciencia conmigo, y si necesitan más información mía, por favor díganme. Gracias de antemano por tu ayuda.

Tengo este código que hace ping a diferentes PC y luego regresa si están en línea / fuera de línea. Quería saber si podría agregar otra columna una vez que el archivo bat haya ejecutado su prueba de ping para que tenga el nombre de la computadora al lado.

 @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

El archivo bat crea un documento que muestra lo siguiente;

PingTest ejecutado el 28/07/2016 a las 13:10:28

99.1.82.28 está vivo

99.1.82.100 está vivo

ect.

Si es posible, me gustaría que se ejecute el archivo bat para que muestre esto;

El archivo bat crea un documento que muestra lo siguiente;

PingTest ejecutado el 28/07/2016 a las 13:10:28

Computer 1: 99.1.82.28 está vivo

Computer 2: 99.1.82.100 está vivo

ect.

-

Agradecería cualquier ayuda y orientación sobre esto.

Gracias.


Puedes probar esta solución:

@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

EDITAR: el 29/07/2016 a las 12:48

Otra versión con varios colores: gracias especiales a ICARUS por la función de color (-_ °)

@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

EDITAR: Actualizar el 23/08/2016

http://pastebin.com/zjYwSqUM





ping