在批处理脚本的for循环中重定向命令的输出
Posted
技术标签:
【中文标题】在批处理脚本的for循环中重定向命令的输出【英文标题】:Redirect output of command in for loop of batch script 【发布时间】:2013-06-11 09:20:57 【问题描述】:...
for /F %%F in ('dir /B %* 2> nul') do (
...
我在这里尝试做的是丢弃命令的错误输出(并遍历 stdout 输出)。但是,它抱怨:
2> was unexpected at this time.
这是实现这一目标的某种方式吗?
【问题讨论】:
【参考方案1】:在这种情况下,您需要像这样对 > 进行转义
for /F %%F in ('dir /B %* 2^> nul') do (
【讨论】:
微软使用实习生来实现命令外壳,我们的余生都必须忍受它...... 拯救了我的一天,古吉斯伯格先生 :)。我想补充一点:如果你想将stderr重定向到stdout,使用2>&1,你也需要转义&。【参考方案2】:我相信您需要在“2”和“>”之间有一个分隔空间。没有那个分隔符,我的 dir 测试输出仍然显示在屏幕上。此外,我相信通过将 dir 命令的输出发送到 null 不会为集合提供任何数据来处理。
【讨论】:
没有。将2>
更改为2 >
将重定向STDOUT 而不是STDERR,从而阻止处理实际目录列表。正如@RGuggisberg 正确指出的那样,重定向运算符必须在嵌套命令中进行转义。以上是关于在批处理脚本的for循环中重定向命令的输出的主要内容,如果未能解决你的问题,请参考以下文章
保持`for / f`重定向输出/在命令期间发生`do()`
处理用户输入与显示数据------------(禁止命令输出lsof命令关闭文件描述符创建读取/写入文件描述符)