如何将错误流重定向到变量
How to redirect error stream to variable
我有以下一段代码。我想获取错误流,在 for
循环中执行命令后将其放入变量中,同时我通过将其发送到 NUL
来丢弃 stdout
。
for /f "delims=" %%a IN ('%test_command% 2^>^&1 1^>NUL') do (
set err_msg="%%~a"
)
我想为其添加一项功能。除了将 stdout
发送到 NUL
我想将其存储在一个文件中,我该如何添加该功能?
使用下面的代码我可以将输出存储到文件中:
for /f "delims=" %%a IN ('%test_command% 2^>^&1 1^>temp.txt') do (
set err_msg="%%~a"
)
但是我想将输出存储到一个变量中,我该怎么做?
只存储第一行:
set /p var=<temp.txt
类似于:
do (
set err_msg="%%~a" && set /p var=<temp.txt
)
存储多行:
要从 temp.txt
获取多行到变量中,请使用 DelayedExpansion 和第二个 for
循环:
setlocal EnableDelayedExpansion
...
for /f "Tokens=* Delims=" %%x in (temp.txt) do set var=!var!%%x
来源Set - Display, set, or remove CMD environment variables
To place the first line of a file into a variable:
Set /P _MyVar=<MyFilename.txt
为了将 std 错误传递给变量,我创建了一个 FOR 循环,它将 std in 和 err 重定向到 findstr 命令,然后让您捕获要查找的文本。
FOR /F "eol=; tokens=1-2 delims=" %a in ('*command* 2^>^&1^|findstr /I "*text*"') do (set x=%a)
我有以下一段代码。我想获取错误流,在 for
循环中执行命令后将其放入变量中,同时我通过将其发送到 NUL
来丢弃 stdout
。
for /f "delims=" %%a IN ('%test_command% 2^>^&1 1^>NUL') do (
set err_msg="%%~a"
)
我想为其添加一项功能。除了将 stdout
发送到 NUL
我想将其存储在一个文件中,我该如何添加该功能?
使用下面的代码我可以将输出存储到文件中:
for /f "delims=" %%a IN ('%test_command% 2^>^&1 1^>temp.txt') do (
set err_msg="%%~a"
)
但是我想将输出存储到一个变量中,我该怎么做?
只存储第一行:
set /p var=<temp.txt
类似于:
do (
set err_msg="%%~a" && set /p var=<temp.txt
)
存储多行:
要从 temp.txt
获取多行到变量中,请使用 DelayedExpansion 和第二个 for
循环:
setlocal EnableDelayedExpansion
...
for /f "Tokens=* Delims=" %%x in (temp.txt) do set var=!var!%%x
来源Set - Display, set, or remove CMD environment variables
To place the first line of a file into a variable:
Set /P _MyVar=<MyFilename.txt
为了将 std 错误传递给变量,我创建了一个 FOR 循环,它将 std in 和 err 重定向到 findstr 命令,然后让您捕获要查找的文本。
FOR /F "eol=; tokens=1-2 delims=" %a in ('*command* 2^>^&1^|findstr /I "*text*"') do (set x=%a)