Board logo

标题: [文本处理] 批处理怎样读取html标题并输出到文本? [打印本页]

作者: ik22    时间: 2011-6-5 16:15     标题: 批处理怎样读取html标题并输出到文本?

哥们,大家好,先祝大家节日快乐!
下面是小弟想问的问题:
  D:\html\ 2011   目录下有很多个html网页文件   现在想写个批处理  把这个目录下的html标题读( <title>***</title> )取出来,并输出到a.txt文本里面,一行一个标题,然后标题后面就写出对应文件的真实路径。。。注:只要输出***的内容即可。不带<title>与</title>字符。。。

a.txt结果 大概如下格式:   

标题1      D:\html\ 2011\1.html
标题2      D:\html\ 2011\2.html
标题3      D:\html\ 2011\3.html
标题4      D:\html\ 2011\4.html
标题5      D:\html\ 2011\5.html
标题6      D:\html\ 2011\6.html
...............


先感谢了。!!!!
作者: CrLf    时间: 2011-6-5 16:24

  1. @echo off
  2. for /f "tokens=1* delims=:" %%a in ('findstr "<title>.*</title>" *.html') do (
  3.    set "tmp=%%b"
  4.    setlocal enabledelayedexpansion
  5.    for /f "delims=<" %%c in ("!tmp:*<title>=!") do echo %%c %%~fa
  6.    endlocal
  7. )
复制代码

作者: namejm    时间: 2011-6-5 17:45

2楼真大胆
原始数据都没看到就闷着头写代码了
作者: namejm    时间: 2011-6-5 18:13

给个比较特殊的标题:
<title>我是标题,我含有<字符</title>

2楼的代码趴下了吧,呵呵。
所以
我一般是不见兔子不撒鹰
不见原始数据绝不写代码
作者: plp626    时间: 2011-6-5 18:20

本来要更新的,我怎么把数据删了,
是,含有><的,for变量分割要注意;
==========================

问个sed替换的
echo <title>567<>890</title>|sed ???
怎么替换后显示为567890(代码尽量简洁)
作者: CrLf    时间: 2011-6-5 18:29

本来要更新的,我怎么把数据删了,
是,含有>
plp626 发表于 2011-6-5 18:20


哈哈,抓语病
  1. echo "<title>567<>890</title>"|sed "s/[^0-9]//g"
复制代码

作者: CrLf    时间: 2011-6-5 18:32

来个正经的:
  1. echo "<title>567<>890</title>"|sed "s/.*<title>\(.*\)<\/title>.*/\1/g;s/<>//g"
复制代码

作者: plp626    时间: 2011-6-5 18:32

6# zm900612


也太不通用了吧,那几个数字仅表示任意字符:
echo "<title>2345abcd@#$哈哈..??<>()  { /\}嘿嘿</title>"|sed "???"
作者: ik22    时间: 2011-6-5 19:40

4# namejm

你好,哥们。
<title>***</title>   *** 字符也不规定的。可能有数字,有文字,有英文等等的标题。所有文字/字符都有可能在标题里面出现。
作者: asnahu    时间: 2011-6-5 19:44

试试这个:
  1. sed -n "/<title>/s/<[^>]*>//g; p"
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2