目前我有一个make文件,它将使用gnumake构建我的软件,目前我将输出文本(如构建日志,警告,错误)重定向到文件中。但是现在我认为在构建时以及在文件中重定向输出文本时显示所有输出文本非常有用。下面是我当前的dos命令,
gnumake -f Build.mak 1>Logs.txt 2>>&1
是否可以在将输出文本重定向到文件中时显示输出文本?
请告知。
非常感谢。
答案 0 :(得分:3)
我知道这是一个旧帖子,但从未正确回答。
以下是其他未来观众的答案。
您不需要tee
来记录文件并显示文本。还有另一种方式。
StackOverflow上回答了这个问题。以下是2个链接:
如果您不想使用tee
,请查看:When adding a TextLog to Echo in Command Line, Input wont show up
对于tee
,您可以看到:Displaying Windows command prompt output and redirecting it to a file
这里要回答一下。
在dos yo中可以使用它而不使用tee。
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%
答案 1 :(得分:2)
如果在ms窗口上安装cygwin(unix工具),则可以使用“tee”命令: gnumake -f Build.mak | tee Logs.txt
(这会将输出保存到Logs.txt,同时显示输出到控制台)。
答案 2 :(得分:0)
看看这个SOQ:
基本上,您可以使用tee
命令,例如从这里:
答案 3 :(得分:0)
Avrumi Sherman的增强版,可以处理[0, 1, 1, 2, 2, 2]
和 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
(最后一行)。 / p>
要在批处理文件中使用,就像Avrumi Sherman一样,但是要使用单个 STDERR
来捕获 ERROR 情况以及:
&
现在,您可以使用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
。这里使用上面的示例%tmpLog%
的内容:
%logFile%