【问题标题】:Redirect output of command in for loop of batch script在批处理脚本的for循环中重定向命令的输出
【发布时间】:2013-06-11 09:20:57
【问题描述】:
...
for /F %%F in ('dir /B %* 2> nul') do (
...

我在这里尝试做的是丢弃命令的错误输出(并遍历 stdout 输出)。但是,它抱怨:

2> was unexpected at this time.

这是实现这一目标的某种方式吗?

【问题讨论】:

    标签: batch-file for-loop cmd io-redirection


    【解决方案1】:

    在这种情况下,您需要像这样对 > 进行转义

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

    【讨论】:

    • 微软使用实习生来实现命令外壳,我们的余生都必须忍受它......
    • 拯救了我的一天,古吉斯伯格先生 :)。我想补充一点:如果你想将stderr重定向到stdout,使用2>&1,你也需要转义&。
    【解决方案2】:

    我相信您需要在“2”和“>”之间有一个分隔空间。没有那个分隔符,我的 dir 测试输出仍然显示在屏幕上。此外,我相信通过将 dir 命令的输出发送到 null 不会为集合提供任何数据来处理。

    【讨论】:

    • 没有。将2> 更改为2 > 将重定向STDOUT 而不是STDERR,从而阻止处理实际目录列表。正如@RGuggisberg 正确指出的那样,重定向运算符必须在嵌套命令中进行转义。
    猜你喜欢
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 2017-02-03
    • 2023-04-07
    • 2023-03-06
    • 2012-05-28
    • 2018-11-07
    • 1970-01-01
    相关资源
    最近更新 更多