在重定向文件中的输出文本时,如何在Windows命令行中显示输出文本?

在重定向文件中的输出文本时,如何在Windows命令行中显示输出文本?,windows,cmd,tee,Windows,Cmd,Tee,目前,我有一个make文件,该文件将使用gnumake构建我的软件,目前我在一个文件中重定向我的输出文本(如构建日志、警告、错误)。但现在我认为,在构建和重定向文件中的输出文本时,显示所有输出文本非常有用。下面是我目前的命令 gnumake -f Build.mak 1>Logs.txt 2>>&1 在重定向文件中的输出文本时,是否可以显示输出文本?查看此SOq: 基本上,您可以使用tee命令,例如从这里: 如果安装cygwin(ms windows上的u

目前,我有一个make文件,该文件将使用gnumake构建我的软件,目前我在一个文件中重定向我的输出文本(如构建日志、警告、错误)。但现在我认为,在构建和重定向文件中的输出文本时,显示所有输出文本非常有用。下面是我目前的命令

gnumake -f Build.mak  1>Logs.txt 2>>&1

在重定向文件中的输出文本时,是否可以显示输出文本?

查看此SOq:

基本上,您可以使用
tee
命令,例如从这里:

如果安装cygwin(ms windows上的unix工具),可以使用“tee”命令: gnumake-f Build.mak | tee Logs.txt


(这将把输出保存到Logs.txt,同时将输出显示到控制台)。

我知道这是一篇老文章,但从未得到正确回答。 这里有一个答案供其他未来的观众参考。 您不需要
tee
就可以记录文件并显示文本。还有另一种方法

这个问题在StackOverflow上得到了回答。以下是两个链接:

如果您不想使用
tee
请检查:

对于
tee
,您可以看到:

我要把答案扔到这里

在dos中,您可以使用此选项,而无需使用T形三通

set LogFile=path\logfile.txt
set TempLog=path\temp
set logg=^> %TempLog%^&^& type %TempLog%^&^&type %TempLog%^>^>%LogFile%
如果需要创建目录或/和logfile.txt,请执行此操作

if not exist "path" mkdir "path" >>nul
echo. 2>  %LogFile%  >nul
echo. 2>  %TempLog%  >nul
现在只需像这样使用
echo

echo This will show me a text and logg  %logg%
的增强版,可处理
STDERR
STDOUT

D:\>dir ERROR 1>log.txt 2>&1 & type log.txt
 Datenträger in Laufwerk D: ist DATA
 Volumeseriennummer: 4653-A096

 Verzeichnis von D:\Projekte\UDG_TMP\build-deploy

 Datei nicht gefunden
因此,它在屏幕和日志文件上显示
STDTOUT
(第一行)和
STDERR
(最后一行)

要在批处理文件中使用,只需像did一样操作,但也要使用单个
&
,以便捕获错误情况:

D:\>set logFile=log.txt
D:\>set tmpLog=tmp.txt
D:\>set logCmd=1^>%tmpLog% 2^>^&1 ^& type %tmpLog% ^& type %tmpLog%^>^>%logFile%
现在,您可以像使用logCmd一样使用
logCmd
变量)

注意第一个
dir
和第二个
rmdir
的错误消息显示在屏幕上,并出现在日志文件中:

D:\>echo START %logCmd%
START

D:\>dir DIRECTORY %logCmd%
 Datenträger in Laufwerk D: ist DATA
 Volumeseriennummer: 4653-A096

 Verzeichnis von D:\

Datei nicht gefunden

D:\>mkdir DIRECTORY %logCmd%

D:\>dir DIRECTORY %logCmd%
 Datenträger in Laufwerk D: ist DATA
 Volumeseriennummer: 4653-A096

 Verzeichnis von D:\DIRECTORY

26.08.2020  17:50    <DIR>          .
26.08.2020  17:50    <DIR>          ..
               0 Datei(en),              0 Bytes
               2 Verzeichnis(se), 68.391.989.248 Bytes frei

D:\>rmdir DIRECTORY %logCmd%

D:\>rmdir DIRECTORY %logCmd%
Das System kann die angegebene Datei nicht finden.

D:\>echo STOP %logCmd%
STOP

不知道有关
dos
,但在unix领域,这是由
tee
完成的,即
make | tee日志文件
可能是
START
 Datenträger in Laufwerk D: ist DATA
 Volumeseriennummer: 4653-A096

 Verzeichnis von D:\

Datei nicht gefunden
 Datenträger in Laufwerk D: ist DATA
 Volumeseriennummer: 4653-A096

 Verzeichnis von D:\DIRECTORY

26.08.2020  17:50    <DIR>          .
26.08.2020  17:50    <DIR>          ..
               0 Datei(en),              0 Bytes
               2 Verzeichnis(se), 68.391.989.248 Bytes frei
Das System kann die angegebene Datei nicht finden.
STOP