tracert tipos parametros extendido comando windows batch-file cmd

windows - parametros - tipos de ping



Archivo por lotes para ejecutar el comando ping y salida a texto tambiƩn (3)

Simplemente podría implementar una redirección explícita al dispositivo de con (consola).
Por cierto, en realidad no necesitas demoras en la expansión si usas la sintaxis de if ErrorLevel :

@echo off setlocal > "OnlineServers.txt" ( for /F "usebackq delims=" %%a in ("servers.txt") do ( ping -n 1 "%%a" > NUL if not ErrorLevel 1 ( echo %%a Online> con echo %%a Online ) else ( echo %%a Offline> con ) ) )

Tengo dos archivos por lotes para hacer ping a todas las direcciones IP en un archivo de texto servers.txt . Uno de los archivos por lotes hace ping a los servidores y muestra el resultado en la ventana de CMD. El otro archivo por lotes hace ping a los servidores y no muestra nada en las ventanas de CMD y luego de que finaliza todos los ping a los servidores, los pondrá en el archivo OnlineServers.txt .

Quiero mezclar esto.

Quiero que el archivo por lotes ejecute los pings y los muestre en la pantalla y coloque todos los servidores en línea en OnlineServers.txt .

Aquí está el primer archivo por lotes que muestra pings en ventanas CMD sin ningún resultado en el archivo de texto:

@echo off for /f "delims=" %%a in (servers.txt) do ping -n 1 %%a >nul && (echo %%a Online) || (echo %%a Offline) echo. pause

Y aquí está el segundo archivo por lotes que no muestra nada en la ventana de CMD y solo muestra el archivo después de hacer ping a todos los servidores:

@echo off setlocal EnableDelayedExpansion (for /F "delims=" %%a in (servers.txt) do ( ping -n 1 "%%a" > NUL if !errorlevel! equ 0 ( echo %%a Online ) )) > OnlineServers.txt

Estos son más de 150 servidores para verificar y agrego servidores a esta lista todos los días, por lo que es una larga lista para verificar.


La escritura por lotes en el archivo tendrá que separar los paréntesis que los incluyen con la redirección y restablecer el archivo al inicio.

@echo off setlocal EnableDelayedExpansion :: Reset file Type Nul >OnlineServers.txt for /F "delims=" %%a in (servers.txt) do ( ping -n 1 "%%a" >NUL 2>&1 If !errorlevel! equ 0 ( echo %%a Online echo %%a Online>>OnlineServers.txt ) Else ( echo %%a Offline ) )


Si desea agregar algunos colores para su archivo por lotes como ese:

@echo off Title Multi-Ping hosts Tester with colors by Hackoo 2016 call :init set "Servers_List=servers.txt" If Not exist %Servers_List% goto error mode con cols=70 lines=35 set "LogFile=OnlineServers.txt" If exist %LogFile% Del %LogFile% echo( call :color 0E " ------- Ping status of targets hosts -------" 1 echo( ( echo ****************************************************** echo PingTest executed on %Date% @ Time %Time% echo ****************************************************** echo( ) > %LogFile% Setlocal EnableDelayedExpansion for /f "usebackq delims=" %%a in ("%Servers_List%") do ( ping -n 1 %%a | find "TTL=" >nul if errorlevel 1 ( call :color 0C " Host %%a is not reachable KO" 1 ) else ( call :color 0A " Host %%a is reachable OK" 1 & echo Host %%a is reachable OK >>%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 ::************************************************************************************* :error mode con cols=70 lines=3 color 0C cls echo( echo ATTENTION ! ! ! Check if the file "%Servers_List%" exists ! pause>nul & exit ::*************************************************************************************

Para que pueda obtener una salida como esta: