考虑这个.bat文件:
@ECHO OFF
ECHO Owner: Jeremy.Coulson
ECHO Food: Ham sandwiches
ECHO Drink: Lemonade
考虑第二个.bat文件:
@ECHO OFF
FOR /F "tokens=*" %%a in ('source.bat') do SET OUTPUT=%%a
echo %output%
运行第二个.bat文件的结果是:
Drink: Lemonade
显然,我在这里做的只是获取source.bat输出的最后一件事。如果相反,我想指定要检索哪一行作为变量?例如,如果我只想检索" Food"中的任何内容,该怎么办?线?
答案 0 :(得分:2)
要获取包含特定字词的行,请将输出(|
)输入find
(从/I
移除find
以进行处理 - 敏感搜索):
for /F "delims=" %%L in ('call source.bat ^| find /I "Food"') do (
set OUTPUT=%%L
REM goto :CONTINUE
)
:CONTINUE
如果可能有多个匹配项,您需要决定:如果您想要第一个匹配项,请移除REM
前面的goto
;如果你想要最后一个,请留下它。
要获取特定的行号,只需指定skip
的{{1}}选项:
for /F
set "NUMBER=4"
set /A "SKIP=NUMBER-1"
if %SKIP% leq 0 set "SKIP=" else set "SKIP=skip=%SKIP% "
for /F "%SKIP%delims=" %%L in ('call source.bat') do (
set OUTPUT=%%L
goto :CONTINUE
)
:CONTINUE
将在上面的示例中包含SKIP
(尾随 SPACE ,因此skip=3
会收到for /F
)。 "skip=3 delims="
子句确保if
为空SKIP
或更少的数字被指定为跳过,因为0
在for /F
的情况下抛出语法错误给出。
答案 1 :(得分:1)
请改用FIND。
{{1}}