标题: [文本处理] [已解决]批处理怎样合并文本,边写入边按500条生成html? [打印本页]
作者: w1983912 时间: 2011-3-2 21:41 标题: [已解决]批处理怎样合并文本,边写入边按500条生成html?
大家好 ,我又来了 ,工作原因 不得不请教各位朋友
文本有1000个 这个我只拿3个文件 来说明一下我的需求
内容为: 每行一个词 词在5个txt内没有一个是一样的 词语的第一字不是空格
只有中间才有些有空格 无任何其他符号 暂时我用6条供测试
1.txt的内容 2.txt的内容 3.txt的内容 4txt的内容 5.txt的内容
小a游戏 有12 3 芝麻开花 游1200戏 另外了12
1a 活动 记得 11 游戏 王 好额ee e 恶000 劣外
c 1 活 动 恐怖 he 15 adddd ekwk可靠 可渴望 棵
1小 戏 我54有12 3 954麻开花 饿勒令0 0恶劣了
a 活 动 56记得 11 游2戏 王 饿了为了 2额外恶
c 1 活 动 恐4怖 he 15 addd54d 额外elel 1 饿 批4554
变成 <li>.......</li>; 为一行 class=1 大写的都是对应的文件名哦
<li><a class=1 href='x.php'>小a游戏</a><a class=2 href='x.php'>有12 3</a><a class=3 href='x.php'>芝麻开花</a><a class=4 href='x.php'>游1200戏</a><a class=5 href='x.php'>另外了12</a></li>;
<li><a class=1 href='x.php'>1a 活动</a><a class=2 href='x.php'>记得 11</a><a class=3 href='x.php'>游戏 王</a><a class=4 href='x.php'>好额ee e</a><a class=5 href='x.php'>恶000 劣外</a></li>;
<li><a class=1 href='x.php'>c 1 活 动</a><a class=2 href='x.php'>恐怖 he</a><a class=3 href='x.php'>15 adddd</a><a class=4 href='x.php'>ekwk可靠</a><a class=5 href='x.php'>可渴望 棵</a></li>;
<li><a class=1 href='x.php'>1小 戏</a><a class=2 href='x.php'>我54有12 3</a><a class=3 href='x.php'>954麻开花</a><a class=4 href='x.php'>饿勒令0</a><a class=5 href='x.php'>0恶劣了</a></li>;
<li><a class=1 href='x.php'>a 活 动</a><a class=2 href='x.php'>56记得 11</a><a class=3 href='x.php'>游2戏 王</a><a class=4 href='x.php'>饿了为了</a><a class=5 href='x.php'>2额外恶</a></li>;
<li><a class=1 href='x.php'>c 1 活 动</a><a class=2 href='x.php'>恐4怖 he</a><a class=3 href='x.php'>15 addd54d</a><a class=4 href='x.php'>额外elel 1</a><a class=5 href='x.php'>饿 批4554</a></li>;
每500条保存变成1.html GBK的 然后从501-1000是保存到2.html的
如果读每个文件20000行 那或许某个文件就没有20000行
没有的数据话就为空 E文件读到了最后一行没数据了 不写入代替数据 这样就好 <a class=5 href='x.php'> </a>
希望知道的朋友请帮帮我 先 谢谢了
[ 本帖最后由 w1983912 于 2011-3-3 00:27 编辑 ]
作者: batman 时间: 2011-3-2 23:27
纯批处理大型的文本,效率我不好说,以下代码考虑了每个文本行数都不一样的情况:- @echo off&setlocal enabledelayedexpansion
- del /q *.html 2>nul
- for %%a in (1 2 3 4 5) do (
- set /a n=0
- for /f "delims=" %%b in (%%a.txt) do (
- set /a n+=1
- set "_!n!-%%a=<a class=%%a href='x.php'>%%b</a>"
- )
- if !max! lss !n! set /a max=n
- )
- set /a n=0
- for /l %%a in (1,1,%max%) do (
- set "str=<li>"&set /a m=%%a%%500
- if "!m!" equ "1" set /a n+=1
- for %%b in (1 2 3 4 5) do (
- if not defined _%%a-%%b (
- set "str=!str!<a class=%%b href='x.php'></a>"
- ) else (
- set "str=!str!!_%%a-%%b!"
- )
- )
- >>!n!.html echo !str!^</li^>
- )
复制代码
作者: w1983912 时间: 2011-3-3 00:26 标题: 回复 2楼 的帖子
很好的代码啊 呵呵 谢谢 不过单个10万条的文本都无法处理 。。。 我的天啊 。。。。。。。。。。。
这个真没办法解决
[ 本帖最后由 w1983912 于 2011-3-3 00:57 编辑 ]
作者: Batcher 时间: 2011-3-3 09:27 标题: 回复 3楼 的帖子
可以考虑使用sed、gawk等
作者: batman 时间: 2011-3-3 11:10
其实这样大型的数据,楼主完全可以用excel来完成(超过65536行或超过256列就请用office2007)。先将要处理的文本按顺序复制到同一个excel表格中(一个文本一列),然后在最后一列中(以最后一列为第四列为例)写下如下公式:="<li><a class="&COLUMN(A1)&" href='x.php'>"&A1&"</a><a class="&COLUMN(B1)&" href='x.php'>"&B1&"</a><a class="&COLUMN(C1)&" href='x.php'>"&C1&"</li>",点住这个单元格右下角双击,公式就会自动复制到最后一行。的当然如果列数太多(2007最多可以到16384列),这个公式可以先用批生成,这个我就不写了,相信对于楼主不是难事。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |