如何在Windows批处理中重定向FOR命令

5
我知道如何使用“> | >> | <| <<”运算符来重定向Windows shell命令,但我无法完成在 FOR 命令中使用的命令的重定向。
例如:
for /f "usebackq tokens=*" %%I in (`__COMMAND__ 2>nul`) do (
    set MYVAR=%%I
)

您好,我希望可以将这个__COMMAND__的stderr静默。

Shell提示不应该在这里使用2(其他重定向也有相同的行为)。

请问有人可以提供帮助吗?

1个回答

5
for /f "usebackq tokens=*" %%I in (`__COMMAND__ 2^>nul`) do (
    set MYVAR=%%I
)

在这种情况下,重定向和条件执行运算符需要用插入符号转义。

或者将所有内容放在双引号中:

for /f "usebackq tokens=*" %%I in (`"__COMMAND__ 2>nul"`) do (
    set MYVAR=%%I
)

也可以使用延迟扩展

@echo off

setlocal enableDelayedExpansion

set "command=__COMMAND__ 2>nul"

for /f "usebackq tokens=*" %%I in (`!command!`) do (
    set MYVAR=%%I
)

它有效!这可能是对于这个愚蠢问题最详尽的答案,所以我现在接受它。感谢@npocmaka! - Campa

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