显示Windows命令提示符输出并将其重定向到文件

核能气质少年 提交于 2020-02-28 10:58:34

如何在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

另请参见良好的重定向说明: http : //www.p-dd.com/chapter7-page14.html


#2楼

我能够找到将输出重定向到文件然后重定向到控制台的解决方案/解决方法:

dir > a.txt | type a.txt

其中dir是需要重定向输出的命令, a.txt是存储输出的文件。


#3楼

检查一下: wintee

不需要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(相同数据)将显示在控制台上。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!