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