标题: 求一批处理从文本文件里提取字符
[打印本页]
作者: tianzizhi
时间: 2006-12-26 03:00
标题: 求一批处理从文本文件里提取字符
现在
www.txt文件内容如下,我想用一批处理从
www.txt里提取以.htm结尾的网页名,如:
200104174738.htm
200104174772.htm
200104174786.htm
然后放到zhang.txt文件里,请问如何实现,谢谢,不要用第三方工具的.
原始文件在这:
www.txt
2002年1月23日 3:26 6031 200104174738.htm 2002年1月23日 3:26
5553 200104174772.htm 2002年1月23日 3:26 5155 200104174773.htm
2002年1月23日 3:26 7634 200104174781.htm 2002年1月23日
3:26 5180 200104174786.htm 2002年1月23日 3:26 6658
200104174834.htm 2002年1月23日 3:26 6351 200104174883.htm
2002年1月23日 3:26 4249 200104174897.htm 2002年1月23日 3:26
4207 200104174907.htm 2002年1月23日 3:26 7199 200104174931.htm
2002年1月23日 3:26 6346 200104174932.htm 2002年1月23日
3:26 8475 200104174943.htm 2002年1月23日 3:26 5321
200104174954.htm 2002年1月23日 3:26 5831 200104174977.htm
2002年1月23日 3:26 6150 200104174978.htm 2002年1月23日 3:26
10850 200104175018.htm 2002年1月23日 3:26 7552 200104175037.htm
2002年1月23日 3:26 7879 200104175047.htm 2002年1月23日
3:26 5086 200104175054.htm 2002年1月23日 3:26 6753
200104175055.htm 2002年1月23日 3:26 3925 200104175079.htm
2002年1月23日 3:26 5588 200104175081.htm 2002年1月23日 3:26
5237 200104175082.htm 2002年1月23日 3:26 5881 200104175130.htm
2002年1月23日 3:26 5047 200104175170.htm 2002年1月23日
3:26 5423 200104175225.htm 2002年1月23日 3:26 6273
200104175226.htm 2002年1月23日 3:26 8096 200104175235.htm
2002年1月23日 3:26 5479 200104175256.htm 2002年1月23日 3:26
6392 200104175257.htm 2002年1月23日 3:26 10924 200104175258.htm
2002年1月23日 3:26 5758 200104175259.htm 2002年1月23日
3:26 6058 200104175276.htm 2002年1月23日 3:26 3535
200104175288.htm 2002年1月23日 3:26 5297 200104175333.htm
2002年1月23日 3:26 6738 200104175361.htm 2002年1月23日 3:26
8533 200104175366.htm 2002年1月23日 3:26 7232 200104175370.htm
2002年1月23日 3:26 6548 200104175382.htm 2002年1月23日
3:26 7091 200104175391.htm 2002年1月23日 3:26 4415
200104175400.htm 2002年1月23日 3:26 5165 200104175411.htm
2002年1月23日 3:26 7801 200104175412.htm 2002年1月23日 3:26
3750 200104175431.htm 2002年1月23日 3:26 4553 200104175432.htm
2002年1月23日 3:26 7356 200104175457.htm 2002年1月23日
3:26 5534 200104175488.htm 2002年1月23日 3:26 5488
200104175506.htm 2002年1月23日 3:26 8817 200104175516.htm
2002年1月23日 3:26 5239 200104175573.htm 2002年1月23日 3:26
8497 200104175634.htm 2002年1月23日 3:26 12113 200104175653.htm
2002年1月23日 3:26 5094 200104175661.htm 2002年1月23日
3:26 8138 200104175690.htm 2002年1月23日 3:26 4387
200104175707.htm 2002年1月23日 3:26 3770 200104175732.htm
2002年1月23日 3:26 5334 200104175733.htm 2002年1月23日 3:26
6303 200104175744.htm 2002年1月23日 3:26 7621 200104175745.htm
2002年1月23日 3:26 5329 200104175746.htm 2002年1月23日
3:26 6310 200104175789.htm 2002年1月23日 3:26 4983
200104175808.htm 2002年1月23日 3:26 6183 200104175815.htm
2002年1月23日 3:26 6465 200104175835.htm 2002年1月23日 3:26
6460 200104175849.htm 2002年1月23日 3:26 7387 200104175858.htm
2002年1月23日 3:26 6035 200104175862.htm 2002年1月23日
3:26 5212 200104175872.htm 2002年1月23日 3:26 7749
200104175897.htm 2002年1月23日 3:26 8160 200104175910.htm
2002年1月23日 3:26 4545 200104175933.htm 2002年1月23日 3:26
5628 200104175934.htm 2002年1月23日 3:26 3817 200104175981.htm
2002年1月23日 3:26 3085 200104175982.htm 2002年1月23日
3:26 8211 200104175983.htm 2002年1月23日 3:26 5113
200104176007.htm 2002年1月23日 3:26 4888 200104176012.htm
[
Last edited by tianzizhi on 2006-12-26 at 03:02 AM ]
作者: everest79
时间: 2006-12-26 03:08
for /f %i in (a.txt) do echo %i|findstr /e /i ".htm"&&echo %i>b.txt
作者: tianzizhi
时间: 2006-12-26 03:15
楼上的不要想当然,要亲自试才行的,要那么容易我就不发贴了.
你写的只会得到第一个变量就了事了,那第一个变量还不是我想要的以.htm结尾的网页名.不过还要谢谢你的热心帮助.
[
Last edited by tianzizhi on 2006-12-26 at 03:16 AM ]
作者: ccwan
时间: 2006-12-26 03:29
@echo off
for /f "tokens=1-5 delims= " %%i in (www.txt) do (
if "%%~xi"==".htm" (>>zhang.txt echo %%i)
if "%%~xj"==".htm" (>>zhang.txt echo %%j)
if "%%~xk"==".htm" (>>zhang.txt echo %%k)
if "%%~xl"==".htm" (>>zhang.txt echo %%l)
if "%%~xm"==".htm" (>>zhang.txt echo %%m)
)
作者: everest79
时间: 2006-12-26 03:38
Quote: |
Originally posted by tianzizhi at 2006-12-25 02:15 PM:
楼上的不要想当然,要亲自试才行的,要那么容易我就不发贴了.
你写的只会得到第一个变量就了事了,那第一个变量还不是我想要的以.htm结尾的网页名. ... |
|
你试过没有?
作者: ccwan
时间: 2006-12-26 03:39
惭愧!以为
www.txt内容就是楼主贴出来的呢!
一看附件,哇!
作者: tianzizhi
时间: 2006-12-26 03:41
ccwan兄的也不行,zhang.txt里只有一个网页名:200104174738.htm.
还请再改进,还有每行被空格隔开的不是固定的5个变量,有的是6个,有的是5个, 请用我的原始文件测试.
作者: ccwan
时间: 2006-12-26 03:42
楼上用了一个>,成功的话也只会保留最后一个,应该用>>
作者: ccwan
时间: 2006-12-26 03:43
Quote: |
Originally posted by tianzizhi at 2006-12-26 03:41:
ccwan兄的也不行,zhang.txt里只有一个网页名:200104174738.htm.
还请再改进,还有每行被空格隔开的不是固定的5个变量,有的是6个,有的是5个, 请用我的原始文䠮.. |
|
不会吧?!我试过了,若依你一楼贴出来的内容(非附件),显示66个呢!
作者: tianzizhi
时间: 2006-12-26 03:44
回everest79,我用你的试过了,只得到:2002年1月23日,这个.
你再认真分析一下你写的这句:for /f %i in (a.txt) do echo %i|findstr /e /i ".htm"&&echo %i>b.txt
作者: ccwan
时间: 2006-12-26 03:45
还有,你的附件内容不换行啊。好奇怪。无法正确读取。
[
Last edited by ccwan on 2006-12-26 at 03:48 AM ]
作者: namejm
时间: 2006-12-26 03:49
www.txt 文本里可能没有任何回车,导致 for 语句无法处理如此长的行内容,楼主能不能发一个有回车的文本出来?
作者: tianzizhi
时间: 2006-12-26 04:06
难道真是没有回车惹的事,(这个错误还不容易发现啊),我是网页另存为.txt得到的
www.txt,如果用过回车后可以解决此问题,那问题也就算解决了,谢谢大家了,呵呵..
作者: vkill
时间: 2006-12-26 05:05
用三方工具到很好解决,呵呵,sed
作者: ccwan
时间: 2006-12-26 05:11
还是请vkill写出代码来吧,有时间请教教我用sed,谢谢。
作者: tianzizhi
时间: 2006-12-26 06:12
我试过了,
www.txt文件里的内容就一行的,没有换行,难怪我试了好多都不正确.我弄一小段文件回车后用ccwan的代码可以,误差有一点.
如不回车,就这么长的一行有办法提取出来.htm结尾的么,用第三方工具也行,大家没事了想想怎么才能做到,呵呵.......
作者: vkill
时间: 2006-12-26 06:27
sed "s/htm/\n/" life|sed "/.htm/!d"|sed "s/.* 200/200/;s/.htm.*/.htm/"|more>a.txt
type a.txt
pause>nul
[
Last edited by vkill on 2006-12-26 at 06:35 AM ]
作者: vkill
时间: 2006-12-26 06:30
呵呵,sed awk解决文字很容易了
作者: ccwan
时间: 2006-12-26 06:54
没看懂。
作者: jmz573515
时间: 2006-12-26 10:21
找了半天,没找到文件的规律~
作者: jmz573515
时间: 2006-12-26 21:17
'终于找到了解决方法,把下面的代码存为VBS
'你要处理的文件
www.txt和这个VBS文件一定要在一个目录.
on error resume next
set fso=createobject("scripting.filesystemobject")
set file=fso.opentextfile("www.txt",1)
a=file.readall
file.close
i=0
do
i=instr(i+1,a,".htm")
if i<>0 then b=b & mid(a,i-12,16)& vbcrlf
loop until i=0
set file=fso.createtextfile("222.txt")
file.write b
file.close
msgbox "文件处理完毕,请查看222.txt文件",48+4096,"操作成功"
[
Last edited by jmz573515 on 2006-12-26 at 08:44 AM ]
作者: namejm
时间: 2006-12-26 21:31
按照你的提示,把
www.txt和那个vbs放在同一目录下操作,但是还是出错了。
附件
1: 出错.JPG (2006-12-26 21:31, 9.48 K, 下载附件所需积分 1点
,下载次数: 6)
作者: jmz573515
时间: 2006-12-26 21:36
晕~~
我试了多遍都没有问题,你要处理的文件名是不是
www.txt?
如果还不行你可以试一下,把
www.txt改成11.txt之后把vbs里的
www.txt也改成11.txt看看行不行.
作者: namejm
时间: 2006-12-26 21:42
犯了个低级错误:复制代码的时候,把最开始的 ' 漏掉了。建议把代码部分用 [code] 和 [/code] 括起来,以方便别人的复制。
作者: tianzizhi
时间: 2006-12-26 23:13
vbs确实厉害,不过现在还不能去学它,现在还要学我的c,以后试着用c解决我遇到的问题.
作者: netbenton
时间: 2009-4-12 08:55
标题: 顶起陈年老贴,来迟了,呵呵
@echo off&setlocal enabledelayedexpansion
set "t="
(for /f "tokens=*" %%a in (www.txt) do (set "str=!t!%%a"&set "t=%%a"&call :sub !str!))>dest.txt
start dest.txt
pause
goto :eof
:sub
if /i "%~x1"==".htm" echo %1
shift
if not "%1"=="" goto :sub
set t=!t:.htm=!
goto :eof
来一个纯批的!
作者: freeants001
时间: 2009-4-12 09:20
我怎么下不了附件!~~~
作者: freeants001
时间: 2009-4-12 09:50
来个混血的
more +4 "%~f0">#js.js
cscript /nologo #js.js 文件.txt
goto:eof
:::::::::::::::::::::::
File_Path=WScript.arguments(0);
var fso=new ActiveXObject("scripting.filesystemobject");
var fl=fso.opentextfile(File_Path,1);
var sss=fl.readall();
var fl=fso.opentextfile(File_Path+"_处理后.txt",2,1);
sss=sss.replace(/[\s\S]*?\s+(\d+\.htm)/g,"$1\r\n");
fl.write(sss);