我正在尝试解析另一个逐行输出的函数的输出。要理解该函数,它会返回几行参数和数字,如“top=123456789
”或“low=123456789
”(不带引号) -
我尝试使用
解析这些行for /F "delims=" %%a in ('%%I ^| findstr top') do set updir=%%1
set "updir=%1:~4%"
echo. %updir%
我试图通过修剪像top这样的已知关键字来获得纯数字,然后需要将其设置为var以返回(%~1% ???
)到调用函数(其他批处理文件)。
更新:
这是从我链接的脚本返回行的代码。我尝试了几种方法来解析回报,但我看起来似乎是盲目的或者太愚蠢,一切都很奇怪。
for /f "delims=" %%I in ('cscript /nologo /e:jscript "%~f0" "%URL%"') do (
rem process the HTML line-by-line
org echo(%%I
try1 (echo %%I|findstr top
try2 for /F "delims=" %%a in ('%%I ^| findstr top') do set updir=%%a
try2 echo. %updir%
try3 for /F "delims=" %%a in ('%%I') do findstr top
try3 echo. %2%
)
无效
for /F "tokens=1,2delims==" %%a in ('%%I') do if %1 == top set updir=%%b
echo %updir%
我尝试了下面的delim版本(也是令牌/ delims版本),但我没有做对。
更新解决方案:
对于那些在这里阅读问题的人,还有一些额外的评论:
rem trim whitespace from beginning and end of line
for /f "tokens=*" %%x in ("%%~I") do set "line=%%x"
rem test that trimmed line matches "variable=number"
to find a single item like e.g. "top" you have to add "to" or adjust whole first token
回声!行! | findstr / i“^ to
[a-z] = [0-9] ”> NUL&& (
rem test was successful. Scrape number.
for /f "tokens=2 delims==" %%x in ("%%I") do set "value=%%x"
echo !value!
)
答案 0 :(得分:0)
这是否符合您的需求?
for /F "delims=" %%a in ('type file.txt ^| findstr "top low"') do set /a %%a
set top
set low
echo %top%, %low%
答案 1 :(得分:0)
试试这个:
for /F "tokens=2delims==" %%a in ('findstr top file.txt') do set "updir=%%a"
echo.%updir%
根据您的评论我的新代码:
@echo off &setlocal enabledelayedexpansion
set "string=%%I"
set "string=!string:*top=!"
for /f "delims== " %%z in ("!string!") do set "string=%%z"
echo !string!
..输出:
123456789
Edit2:"
已添加。
答案 2 :(得分:0)
如果您要做的就是跳过所有行,直到找到与“text = numbers”相匹配的行,然后刮掉该行的数字部分,您需要做的就是:
for /f "delims=" %%I in ('cscript /nologo /e:jscript "%~f0" "%URL%"') do (
rem trim whitespace from beginning and end of line
for /f "tokens=*" %%x in ("%%~I") do set "line=%%x"
rem test that trimmed line matches "variable=number"
echo !line! | findstr /i "^[a-z]*=[0-9]*$" >NUL && (
rem test was successful. Scrape number.
for /f "tokens=2 delims==" %%x in ("%%I") do set "value=%%x"
)
)
无论如何,我认为这是对的。我没有测试它。
但是我怀疑这不会像你想要的那样起作用,因为what you are scraping可能包含HTML标签。除非您粘贴示例页面的HTML源代码,否则我们可能无法帮助您删除HTML,并解释您希望从该源代码示例中删除的内容。