我有以下代码。我想获取错误流,在for
循环中执行命令后将其置于变量中,同时我通过将stdout
发送到NUL
来丢弃它。
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"
)
但是我想将输出存储到变量中,我该怎么做?
答案 0 :(得分:1)
仅存储第一行:
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
将文件的第一行放入变量:
Set /P _MyVar=<MyFilename.txt
答案 1 :(得分:0)
为了得到一个变量的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)