0

我正在尝试解析另一个函数的输出,该函数是逐行输出的。为了理解该函数,它返回几行参数和数字,如“ 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 版本(too the tokens/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[az] =[0-9] " >NUL && (

rem test was successful.  Scrape number.
for /f "tokens=2 delims==" %%x in ("%%I") do set "value=%%x"
echo !value!
)
4

3 回答 3

0

这符合您的需求吗?

for /F "delims=" %%a in ('type file.txt ^| findstr "top low"') do set /a %%a 

set top
set low
echo %top%, %low%
于 2013-03-19T08:20:23.647 回答
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

编辑2:"添加。

于 2013-03-19T09:01:26.033 回答
0

如果您只想跳过所有行,直到找到与“text=numerals”匹配的行,然后刮掉该行的数字部分,您需要做的就是:

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"
    )
)

反正我觉得是对的。我没有测试它。

但我怀疑这不会按您的意愿工作,因为您正在抓取的内容可能包括 HTML 标签。除非您粘贴示例页面的 HTML 源代码,并解释您希望从该源示例中抓取的内容,否则我们可能无法帮助您抓取 HTML。

于 2013-03-19T23:35:24.703 回答