如何在Windows命令提示符中运行命令行应用程序,同时显示输出并将输出重定向到文件?
例如,如果我要运行命令dir > test.txt,这将把输出重定向到一个名为test.txt的文件,而不显示结果。
我如何写一个命令来显示输出并将输出重定向到Windows命令提示符中的文件,类似于Unix上的tee命令?
如何在Windows命令提示符中运行命令行应用程序,同时显示输出并将输出重定向到文件?
例如,如果我要运行命令dir > test.txt,这将把输出重定向到一个名为test.txt的文件,而不显示结果。
我如何写一个命令来显示输出并将输出重定向到Windows命令提示符中的文件,类似于Unix上的tee命令?
当前回答
我也在寻找同样的解决方案,经过一些尝试,我成功地在命令提示符中实现了这一点。以下是我的解决方案:
@Echo off
for /f "Delims=" %%a IN (xyz.bat) do (
%%a > _ && type _ && type _ >> log.txt
)
@Echo on
它甚至还可以捕获任何PAUSE命令。
其他回答
@echo on
set startDate=%date%
set startTime=%time%
set /a sth=%startTime:~0,2%
set /a stm=1%startTime:~3,2% - 100
set /a sts=1%startTime:~6,2% - 100
fullprocess.bat > C:\LOGS\%startDate%_%sth%.%stm%.%sts%.LOG | fullprocess.bat
这将创建一个包含当前日期时间的日志文件,您可以在此过程中设置控制台行
我能够找到一个解决方案/工作区重定向输出到一个文件,然后到控制台:
dir > a.txt | type a.txt
其中dir是需要重定向输出的命令,a.txt是存储输出的文件。
我想对撒克逊德鲁斯的精彩回答进行一点扩展。
如上所述,您可以重定向当前目录中的可执行文件的输出,如下所示:
powershell ".\something.exe | tee test.txt"
但是,这只将stdout记录到test.txt。它也不记录stderr。
最明显的解决方法是使用如下内容:
powershell ".\something.exe 2>&1 | tee test.txt"
然而,这并不适用于所有的前任。一些东西。前任们会把2>&1解释为争吵而失败。正确的解决方案是在something.exe及其开关和参数周围只使用撇号,如下所示:
powershell ".\something.exe --switch1 --switch2 … arg1 arg2 …" 2^>^&1 ^| tee test.txt
但是请注意,在这种情况下,您必须转义特殊的cmd-shell字符“>&|”,每个字符都有一个“^”,这样它们只能由powershell解释。
发送输出到控制台,附加到控制台日志,从当前命令删除输出
dir >> usb-create.1 && type usb-create.1 >> usb-create.log | type usb-create.1 && del usb-create.1
不幸的是,没有这样的东西。
Windows控制台应用程序只有一个输出句柄。(嗯,有两个STDOUT, STDERR,但在这里不重要)>重定向输出通常写入控制台句柄到文件句柄。
如果你想要有某种多路复用,你必须使用一个外部应用程序,你可以将输出转移到它。然后,该应用程序可以再次写入文件和控制台。