如何在Windows命令提示符下运行命令行应用程序,并同时显示输出和重定向到文件?
例如,如果我运行命令dir > test.txt ,这会将输出重定向到一个名为test.txt的文件,而不显示结果。
我怎么能写一个命令显示输出和输出重定向到在Windows命令提示符下一个文件,类似于tee上的Unix命令?
#1楼
如果您希望在屏幕上真正看到某些内容,即使将批处理文件重定向到文件,也可以使用以下帮助。 如果将设备CON重定向到文件,也可以使用
例:
ECHO first line on normal stdout. maybe redirected
ECHO second line on normal stdout again. maybe redirected
ECHO third line is to ask the user. not redirected >CON
ECHO fourth line on normal stdout again. maybe redirected
#2楼
我能够找到将输出重定向到文件然后重定向到控制台的解决方案/解决方法:
dir > a.txt | type a.txt
其中dir是需要重定向输出的命令, a.txt是存储输出的文件。
#3楼
不需要cygwin。
我确实遇到并报告了一些问题。
另外,您可能会检查unxutils,因为它包含tee(不需要cygwin),但是请注意,此处输出的EOL与UNIX类似。
最后但并非最不重要的一点是,如果您具有PowerShell,则可以尝试使用Tee-Object。 在PowerShell控制台中键入get-help tee-object以获得更多信息。
#4楼
这是实时的,但也很丑陋,性能很慢。 没有经过良好测试:
@echo off
cls
SET MYCOMMAND=dir /B
ECHO File called 'test.bat' > out.txt
for /f "usebackq delims=" %%I in (`%MYCOMMAND%`) do (
ECHO %%I
ECHO %%I >> out.txt
)
pause
#5楼
另一种方法是在程序中将stdout发送到stderr:
在Java中:
System.setOut(new PrintStream(new TeeOutputStream(System.out, System.err)));
然后,在您的dos批处理文件中: java program > log.txt
stdout将转到日志文件,并且stderr(相同数据)将显示在控制台上。
本文介绍如何在Windows命令提示符下运行命令并将输出同时显示在屏幕上和重定向到文件的方法,包括直接命令操作、批处理脚本及利用PowerShell的Tee-Object命令。

被折叠的 条评论
为什么被折叠?



