将批处理文件结果输出到文本文件和屏幕本身

Output Batch File Results to Text File AND to the screen itself

我在批处理文件中编写了一个 Mass IP 地址 pinger,它读取文本文件中的 IP,然后在 CMD 屏幕上告诉用户 IP 是 "OK" 还是 "Failed to respond" ...

@echo off
for /f "delims=" %%a in (iplist.txt) do ping -n 1 %%a >nul && (echo %%a ok)     || (echo %%a failed to respond)
Pause

一切正常,除了我还想将 CMD 屏幕上的内容输出到文本文件...

Whosebug 上的所有解决方案都使 CMD 屏幕上的输出不显示,而是使所有输出直接进入文本文件。

我需要它在 CMD 屏幕和文本文件上显示输出。

谢谢。

最简单的方法是写到两个地方

@echo off
    setlocal enableextensions enabledelayedexpansion

    (for /f "usebackq delims=" %%a in ("iplist.txt") do (
        ping -n 1 "%%~a" >nul && set "msg=%%~a ok" || set "msg=%%~a failed to respond"
        >con echo(!msg!
        echo(!msg!
    )) > "logfile.txt"
    Pause

您可以看到第一个 echo 被重定向到控制台。第二个没有重定向,完整的 for 命令已被重定向以避免对输出文件的每一行写入进行 open/close 操作。