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

Cam*_*mpa 5 batch-file

我知道如何使用>|>>|<|<<运算符重定向Windows shell命令,但我无法完成命令中使用的FOR命令?

例如:

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

你知道,在这里我想要沉默一下这个__COMMAND__.shell抱怨它不期望2在那个地方(其他重定向的行为相同).

有人可以帮忙吗?

npo*_*aka 5

for /f "usebackq tokens=*" %%I in (`__COMMAND__ 2^>nul`) do (
    set MYVAR=%%I
)
Run Code Online (Sandbox Code Playgroud)

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

或者用双引号括起来:

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

使用延迟扩展也是可能的:

@echo off

setlocal enableDelayedExpansion

set "command=__COMMAND__ 2>nul"

for /f "usebackq tokens=*" %%I in (`!command!`) do (
    set MYVAR=%%I
)
Run Code Online (Sandbox Code Playgroud)