Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批处理文件以运行ping命令并输出为文本_Windows_Batch File_Cmd - Fatal编程技术网

Windows 批处理文件以运行ping命令并输出为文本

Windows 批处理文件以运行ping命令并输出为文本,windows,batch-file,cmd,Windows,Batch File,Cmd,我有两个批处理文件来ping文本文件servers.txt中的所有IP。 其中一个批处理文件ping服务器并在CMD窗口上显示结果。 另一个批处理文件ping服务器,在CMD窗口上不显示任何内容,完成对服务器的所有ping后,它将把它们放入OnlineServers.txt文件中 我想混合这个东西 我希望批处理文件运行ping并在屏幕上显示它们,并将所有在线服务器放在OnlineServers.txt中 这是第一个批处理文件,它显示CMD窗口上的ping,但没有任何文本文件输出: @echo

我有两个批处理文件来ping文本文件
servers.txt
中的所有IP。 其中一个批处理文件ping服务器并在CMD窗口上显示结果。 另一个批处理文件ping服务器,在CMD窗口上不显示任何内容,完成对服务器的所有ping后,它将把它们放入
OnlineServers.txt
文件中

我想混合这个东西

我希望批处理文件运行ping并在屏幕上显示它们,并将所有在线服务器放在
OnlineServers.txt

这是第一个批处理文件,它显示CMD窗口上的ping,但没有任何文本文件输出:

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

 echo.
 pause
这是第二个批处理文件,它在CMD窗口上不显示任何内容,仅在ping所有服务器后输出该文件:

 @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

要检查的服务器超过150台,我每天都会将服务器添加到这个列表中,所以要检查的列表很长。

批量写入文件将必须去掉括号 使用重定向并在开始时重置文件

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

您只需实现显式重定向到
con
设备(控制台)。
顺便说一下,如果使用以下语法,实际上不需要延迟扩展:


如果要为批处理文件添加一些颜色,请执行以下操作:

@echo关闭
标题2016年Hackoo推出的彩色多Ping主机测试仪
呼叫:init
设置“Servers\u List=Servers.txt”
如果不存在%Servers\u列表%goto错误
模式con cols=70线=35线
设置“LogFile=OnlineServers.txt”
如果存在%LogFile%Del%LogFile%
回音(
调用:颜色0E“---Ping目标主机的状态--------”1
回音(
(
回音******************************************************
在%Date%@Time%Time%执行回显PingTest
回音******************************************************
回音(
)>%LogFile%
Setlocal EnableDelayedExpansion
对于/f“usebackq delims=“%”中的%%a(“%Servers\u List%”)do(
ping-n 1%%a |查找“TTL=“>nul
如果错误级别为1(
呼叫:颜色0C“无法访问主机%%a”1
)否则(
调用:颜色0A“主机%%a可访问正常”1&回显主机%%a可访问正常>>%LogFile%
)
)
端部
启动“%LogFile%”
暂停>取消并退出
::************************************************************************************* 
:init
提示$g
对于/F中的“delims=。”%%a(“'prompt$H.%%b in(1)do rem””)请设置“BS=%%a”
退出/b
::*************************************************************************************
:颜色
设置nL=%3
如果未定义nL echo,则需要第三个参数&pause>nul&goto:eof
如果%3==0(
%2&findstr/v/a:%1/r“^$%2编号和删除%2>&1转到:eof
)如果%3==1,则为else(
回显%bs%>%2&findstr/v/a:%1/r“^$%2编号和删除%2>&1&goto:eof
)
退出/b
::*************************************************************************************
:错误
模式con cols=70线=3
颜色0C
cls
回音(
回显注意!!!检查文件“%Servers\u List%”是否存在!
暂停>取消并退出
::*************************************************************************************
因此,您可以获得如下输出:

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