从BATCH文件中提取字符串的最佳方法

时间:2011-11-30 00:20:02

标签: string batch-file extract

我必须处理300多个HTML文件,从每个文件中提取一个字符串并将其放在一个单独的文本文件中以便下载导入。好处:字符串格式在每个文件中都是相同的,并且也是来自同一位置的+/-两行。

我认为可能使用Python,但后来我认为PERL可能是一种更好的方式,因为这种方式会影响到它的后院。

遗憾的是,我无法访问UNIX / LINUX,或者只是grep它...

这是一个奇怪的客户请求,我有点眼睛盯着ATM。

所以:从BATCH文件中提取目标字符串的最佳方法是什么?

WR!

3 个答案:

答案 0 :(得分:1)

由于您已熟悉Grep,为什么不使用Windows端口,例如Grep in GnuWin32

答案 1 :(得分:1)

在Windows中获得大量* nix功能的另一个好方法是Cygwin http://www.cygwin.com

答案 2 :(得分:1)

如果您向我们提供更多详细信息(即文件的路径和名称,要提取的字符串等),也许我可以编写Windows Batch .BAT文件来完成此任务...

修改

要编写成功运行的批处理文件,我需要一些额外的数据,所以我做了一些假设。你可以帮我修一下细节。这是我的方法:

  1. 寻找包含“>文字链接<”的行。我想只有一个;这可能是固定的。
  2. 阅读下一行。我假设每个td位于独立的行中;这可能是固定的。
  3. 在此行中删除文本从行首到value字符串。
  4. 用$替换引号(下一步不能处理引号)。
  5. 获取$;这就是结果。
  6. 如果文件包含空行,

    for /F skip...命令可能会读取错误的行;这可能是固定的。

    @echo off
    setlocal DisableDelayedExpansion
    findstr /n ">Text link<" thefile.htm > linefound.tmp
    for /F "delims=:" %%a in (linefound.tmp) do set lineNo=%%a
    for /F "skip=%lineNo% delims=" %%a in (thefile.htm) do (
        set "theLine=%%a"
        goto continue
    )
    :continue
    setlocal EnableDelayedExpansion
    set theLine=!theLine:*value=!
    set theLine=!theLine:"=$!
    for /F "tokens=2 delims=$" %%a in ("!theLine!") do set URL=%%a
    echo Result: %URL%
    

    编辑没有。 2

    你让我很困惑。是否编写了第一个代码?您在评论中发布的第二个示例似乎与第一个示例无关(第二个<td>内或[url=http://之后的数据?)。它是同一个问题还是另一个问题?请不要假设我知道HTML文件格式(我不知道)。我知道批处理文件,但如果我还没有完整的细节,我无法猜测该怎么做......

    以下批处理文件显示在同一行中的方括号之间的所有内容,在第一个参数中给出的文件中包含[url=http://字符串:

    @echo off
    for /F "tokens=2 delims=[]" %%a in ('findstr /n "[url=http://" %1') do echo %%a