批处理脚本中for循环的命令输出重定向

20
...
for /F %%F in ('dir /B %* 2> nul') do (
...

我在这里尝试的是丢弃命令的错误输出(并循环处理标准输出)。然而,它会抱怨:

2> was unexpected at this time.

有什么方法可以实现这个吗?

2个回答

36

在这种情况下,您需要像这样转义 > 符号

for /F %%F in ('dir /B %* 2^> nul') do (

17
微软聘请了一名实习生来实现命令行界面,我们不得不与其共度余生... - bambams
救了我的一天,Guggisberg先生:)。我想补充一点:如果你想将stderr重定向到stdout,通过使用2>&1,你也需要转义&。 - Rolf

-6

我相信你需要在“2”和“>”之间加上分隔符。如果没有这个分隔符,我的dir测试输出仍然会显示在屏幕上。此外,我认为将dir命令的输出发送到null将不会向set提供任何返回数据。


3
2>更改为2 >将重定向标准输出而不是标准错误输出,从而阻止实际目录列表的处理。正如@RGuggisberg所指出的那样,在嵌套命令中必须转义重定向操作符。 - Ansgar Wiechers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接