Answers:
net stop w3svc >NUL 2>&1
。..谢谢!
2> 2.txt
作品(或2> &1
) 2 > 2.txt
不起作用;2 > &1
才不是。
Anders Lindahl的答案是正确的,但应注意的是,如果要将stdout重定向到文件,并且也要重定向stderr,则必须确保在重定向后2>&1
指定该文件,否则将不起作用。1>
REM *** WARNING: THIS WILL NOT REDIRECT STDERR TO STDOUT ****
dir 2>&1 > a.txt
dir 2>&1 > a.txt
,您首先要将(>
)流2(stderr)重定向到流1(stdout)。然后,在将它们都连接在一起之后,将stdout(>
没有指定符)重定向到文件。如果要让stderr转到其他地方,则不能先将其与stdout结合使用。
虽然接受这个问题的答案是正确的,它确实没有做太多解释为什么它的工作原理,以及因为语法不立即清除我做了一个快速谷歌,以找出究竟是怎么回事。希望这些信息对其他人有帮助,我在这里发布。
从命令提示符重定向错误消息:STDERR / STDOUT
摘要
当使用'>'符号重定向应用程序的输出时,错误消息仍会显示在屏幕上。这是因为错误消息通常发送到标准错误流而不是标准输出流。
控制台(命令提示符)应用程序或命令的输出通常发送到两个单独的流。常规输出发送到标准输出(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
但是,不能保证使用重定向合并语法及时将行SDTOUT
和的输出STDERR
逐行交织在一起POSIX
。
如果应用程序使用缓冲输出,则可能会发生一个流的文本在缓冲区边界插入另一个流的文本的情况,该边界可能出现在文本行的中间。
专用控制台输出记录器(即"StdOut/StdErr Logger"
by 'LoRd MuldeR'
)对于这种任务可能更可靠。
请参阅:MuldeR的开源项目
在批处理文件(Windows 7及更高版本)中,我发现此方法最可靠
Call :logging >"C:\Temp\NAME_Your_Log_File.txt" 2>&1
:logging
TITLE "Logging Commands"
ECHO "Read this output in your log file"
ECHO ..
Prompt $_
COLOR 0F
显然,使用所需的任何命令,输出将定向到文本文件。使用此方法很可靠,但是屏幕上没有输出。
>con echo This goes to screen
对用户输入也有用。>con set /p "var="Input: "
注意:这些行仅显示在屏幕上,而不会重定向到文件。