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