显示和存储 Windows 批处理文件输出

显示和存储 Windows 批处理文件输出

我编写了一个批处理文件,用于运行我们开发的程序,并传递一些参数。在调试模式下运行该程序时,会输出大量调试消息,虽然我仍然希望能够在 cmd.exe 窗口中“实时”查看该程序的运行情况,但稍后查看这些信息会很方便。

在 *nix 环境中,我可以使用 Tee 输出到文本文件和 stdout。有什么建议吗?

答案1

适用于 Windows 的 TEE
TEE 使您能够将标准输出重定向到文件并同时将其显示在屏幕上。

some_program | TEE [ /D:nn ] file_name

可用作 BAT、Perl 和 Regina 脚本。

作者注。

Rexx 和 Perl 脚本将立即开始显示结果。对于批处理文件,归根结底,您也可以将命令的输出重定向到文件,然后显示该文件。这样一来,您就不会跳过空行。

笔记:这些脚本只是为了好玩而编写的。尽管它们确实可以工作,但它们无法与“真实”的东西相媲美——编译后的可执行文件,由真正的程序员用“真正的”编程语言编写。


我使用 Cygwin。
还有Windows 版 Tee 实用程序已更新

答案2

我为此制作了一个 tee.bat 工具:

@ECHO OFF
SETLOCAL
 SET Append=false 
IF /I "%~1]=="/a" ( SET Append=true & SHIFT )
IF "%~1"== "" GOTO help
IF "%~2"== "" GOTO help
 SET Counter=0 
FOR /F %%A IN ('DIR /A /B %1 2^>NUL') DO CALL :Count "%%~fA"
 IF %Counter% GTR 1 ( SET Counter= & GOTO Syntax ) 
 SET File=%1
 DIR /AD %File% >NUL 2>NUL
 IF NOT ERRORLEVEL 1 ( SET File= & GOTO Syntax ) 
 SET Y= 
VER | FIND "Windows NT" > NUL 
IF ERRORLEVEL 1 SET Y=/Y
 IF %Append%==false  (COPY %Y% NUL %File% > NUL 2>&1) 
 FOR /F "tokens=1* delims=]" %%A IN ('FIND /N /V ""') DO (
    > CON ECHO.%%B  
        >> %File% ECHO.%%B
 ) 
ENDLOCAL 
GOTO:EOF
 :Count 
SET /A Counter += 1
 SET File=%1 
GOTO:EOF
 :help
 ECHO.
 ECHO Display text on screen and redirect it to a file simultaneously ECHO Usage: some_command ^| TEE.BAT [ /a ] filename 
 ECHO. 
ECHO Where: "some_command" is the command whose output should be redirected
 ECHO "filename" is the file the output should be redirected to
 ECHO /a appends the output of the command to the file,
 ECHO rather than overwriting the file
 ECHO. 
ECHO Made by Wasif Hasan.

用法:command | tee [/a] filename

/a切换将输入附加到文件而不是覆盖它。

相关内容