标题: [文本处理] 批处理将一组文本中多行内容写入新的文本中 [打印本页]
作者: saymissme 时间: 2008-3-28 23:36 标题: 批处理将一组文本中多行内容写入新的文本中
假设遇到这样一个情况,这里有上千个文本
在每个文本里面都有这样的一个特殊字词:bathome,而且在这个文本里面这样的这样的字词只存在一处
如:
sadsalklkewr
sdfsdkiwek;la
df3w344
sdf4332
bathome
saymissme
thank you
oiio34230ds
3240230
需要将bathome这一行和下面的2行或者更多行一起存入一个新的文本里,如:
bathome
saymissme
thank you
这上千个文本都是放在同一文件夹内,命名没有关联性,如何用bat语言实现呢?
谢谢大家
[ 本帖最后由 saymissme 于 2008-3-28 23:38 编辑 ]
作者: youxi01 时间: 2008-3-29 12:40
程序的效率跟 好多情况有关的
所以尽量把你的问题说细致!
或者 公布几个源文件,给大家参考!!
有些信息至关重要,比如:bathome这个词,在每个文件里,行位置相同吗?等等
作者: 梦想种子 时间: 2008-3-29 12:48
用批处理有个问题不懂解决,就是用delims=时,即分隔符为回车符,会将“bathome”那一段落后的空行去掉,于是无法判断是否已经段落结束了。
用VBS倒容易解决。- set fso= createobject("scripting.filesystemobject")
- set folder= fso.getfolder(".")
- set files=folder.files
- set res=fso.opentextfile("result.txt",8,1)
- for each file in files
- if lcase(fso.getextensionname(file)) = "txt" then
- res.write getstr(file)
- res.writeline
- end if
- next
- function getstr(a)
- flag=false
- set t=fso.opentextfile(a)
- do until t.atendofstream
- s=t.readline
- if s="bathome" then
- flag=true
- end if
- if flag=true then
- if len(s)<>0 then
- getstr=getstr & s & vbcrlf
- else
- exit do
- end if
- end if
- loop
- end function
复制代码
作者: 随风 时间: 2008-3-29 13:01
还有个问题。
bathome 在文档中都是单独占一行,还是在某行中含有bathome
如eutjbathomesd
是都在固定的行?还是不确定的行?
[ 本帖最后由 随风 于 2008-3-29 13:02 编辑 ]
作者: 梦想种子 时间: 2008-3-29 18:46
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b *.txt') do (
- call :get "%%i"
- echo.
- )
- pause
- exit
- :get
- set flag=false
- for /f "tokens=1,2 delims=:" %%j in ('findstr /n .* %1') do (
- if "%%k" == "bathome" set flag=true
- if "!flag!" == "true" (
- if not "%%k" == "" (echo %%k) else goto :eof
- )
- )
复制代码
作者: 随风 时间: 2008-3-29 19:16
max 为需要的行数。
:- @echo off&setlocal enabledelayedexpansion
- set max=2
- for /f "delims=" %%i in ('dir /b *.txt') do (
- set "flag="
- for /f "delims=" %%a in ('type "%%i"') do (
- if /i "%%a"=="bathome" set /a flag+=1
- if defined flag if !flag! leq !max! >>tmp.txt echo %%a
- ))
- start tmp.txt
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |