为了账号安全,请及时绑定邮箱和手机立即绑定

将Windowscmd标准输出和stderr重定向到单个文件

将Windowscmd标准输出和stderr重定向到单个文件

将Windowscmd标准输出和stderr重定向到单个文件我试图重定向所有输出(stdout+stderr)DoS命令到单个文件:C:\>dir 1> a.txt 2> a.txt The process cannot access the file because it is being used by another process.这是可能的,还是应该重定向到两个单独的文件?
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

Anders Lindahl的回答是正确的,但是应该注意,如果您要将stdout重定向到一个文件,并且也想重定向stderr,那么您必须确保2>&1指定这个1>重定向,否则就不能工作了。

REM *** WARNING: THIS WILL NOT REDIRECT STDERR TO STDOUT ****
dir 2>&1 > a.txt

正确方式:dir > a.txt 2>&1..若要附加,请使用>>.


查看完整回答
反对 回复 2019-07-09
?
侃侃无极

TA贡献2051条经验 获得超10个赞

来自MSKB的背景信息

虽然这个问题的公认答案是正确的,但解释起来却没有多大作用为什么它起作用了,而且由于语法还不清楚,所以我做了一个快速的Google来找出到底发生了什么。为了希望这些信息对其他人有所帮助,我在这里发布。

摘自Ms Support KB 110930.


来自MSKB 110930

从命令提示符重定向错误消息:STDERR/STDOUT

摘要

当使用class>‘>符号重定向应用程序的输出时,错误消息仍然打印到屏幕上.这是因为错误消息通常被发送到标准错误流,而不是标准输出流。

控制台(命令提示符)应用程序或命令的输出通常发送到两个单独的流。常规输出被发送到标准输出(STDOUT),错误消息被发送到标准错误(STDERR)。当您使用“>”符号重定向控制台输出时,您只是重定向STDOUT。为了重定向STDERR,您必须为重定向符号指定‘2>’.这将选择第二个输出流,即STDERR。

命令dir file.xxx(在哪里file.xxx)将显示以下输出:

Volume in drive F is Candy Cane Volume Serial Number is 34EC-0876

File Not Found

如果将输出重定向到NUL设备使用dir file.xxx > nul,您仍将看到输出的错误消息部分,如下所示:

File Not Found

将错误消息重定向(仅)到NUL,使用以下命令:

dir file.xxx 2> nul

或者,您可以将输出重定向到一个地方,将错误重定向到另一个地方。

dir file.xxx > output.msg 2> output.err

您可以通过使用“&1”命令将STDERR的输出重定向到STDOUT,然后将输出从STDOUT发送到文件,从而将错误和标准输出打印到单个文件:

dir file.xxx 1> output.msg 2>&1


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 1725 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信