Board logo

标题: [其他] 批处理怎样提取所有文本部分内容再汇总? [打印本页]

作者: 雷厉风行    时间: 2010-4-24 22:03     标题: 批处理怎样提取所有文本部分内容再汇总?

在一文件夹内有很多文本,需要按文本名称或文本类型排列的先后顺序来提取里面部分内容汇集成一文本需要提取的关键词如下:带下划线词语
☆曾用名:佛塑股份->G佛塑->佛塑股份
◆ 行业地位 ◆               ◇万国测评制作:更新时间:2010-04-23◇

  佛塑股份(000973)所属行业:制造业->石油、化学、塑胶、塑料->塑料制造
                           业->塑料薄膜制造业

◆ 大股东进出 ◆               ◇万国测评制作:更新时间:2010-04-23◇

  前十名无限售条件股东       股东人数:51598         截止日期:2010-03-31
    名  称                           持股数(万股) 占流通股 增减情况 股本性质
  ─────────────────────────────────────
  1.佛山富硕宏信投资有限公司           4396.39   8.54%  -1136.84   流通A股
  2.广东省广新外贸集团有限公司         2975.36   5.78%      未变   流通A股
  3.华夏优势增长股票型证券投资基金     2939.46   5.71%      新进   流通A股
  4.华夏蓝筹核心混合型证券投资基金      900.33   1.75%      新进   流通A股
    (LOF)
  5.全国社保基金一零七组合              746.94   1.45%      新进   流通A股
  6.全国社保基金六零一组合              603.46   1.17%      新进   流通A股
  7.华夏回报证券投资基金                599.99   1.17%      新进   流通A股
  8.上投摩根成长先锋股票型证券投资      550.00   1.07%      新进   流通A股
    基金
  9.华夏行业精选股票型证券投资基金      500.00   0.97%      新进   流通A股
    (LOF)
10.罗嗣海                              446.50   0.87%      新进   流通A股
     总  计                           14658.42  28.48%
  ─────────────────────────────────────
汇总成以下显示效果:
☆曾用名:佛塑股份->G佛塑->佛塑股份
佛塑股份(000973)所属行业:制造业->石油、化学、塑胶、塑料->塑料制造业->塑料薄膜制造业---------------(将这里分成2段落除去变成这样一段)
◆ 大股东进出 ◆               ◇万国测评制作:更新时间:2010-04-23◇----(将这里空段落除去变成这样)
前十名无限售条件股东       股东人数:51598         截止日期:2010-03-31
    名  称                           持股数(万股) 占流通股 增减情况 股本性质
  ─────────────────────────────────────
  1.佛山富硕宏信投资有限公司           4396.39   8.54%  -1136.84   流通A股
  2.广东省广新外贸集团有限公司         2975.36   5.78%      未变   流通A股
  3.华夏优势增长股票型证券投资基金     2939.46   5.71%      新进   流通A股
  4.华夏蓝筹核心混合型证券投资基金      900.33   1.75%      新进   流通A股
    (LOF)
  5.全国社保基金一零七组合              746.94   1.45%      新进   流通A股
  6.全国社保基金六零一组合              603.46   1.17%      新进   流通A股
  7.华夏回报证券投资基金                599.99   1.17%      新进   流通A股
  8.上投摩根成长先锋股票型证券投资      550.00   1.07%      新进   流通A股
    基金
  9.华夏行业精选股票型证券投资基金      500.00   0.97%      新进   流通A股
    (LOF)
10.罗嗣海                              446.50   0.87%      新进   流通A股
     总  计                           14658.42  28.48%
  ─────────────────────────────────────

文件夹内全部都是txt文本,文本名称由600***-600999-601***-900***
另外一个文件夹由00001-000999和002***和200***
想提取后会成一个txt格式文本。
(将这里分段落除去变成这样)是原来指向两处有分两段和空段落的将其去掉,
在我测试文件中已经有一个汇总文本
测试文本:http://www.brsbox.com/filebox/up ... 771ed6cc955/dirids/
先谢过!!!

[ 本帖最后由 雷厉风行 于 2010-4-26 14:31 编辑 ]
作者: hanyeguxing    时间: 2010-4-24 23:24

对dir使用/oe 按扩展名的字母顺序
作者: 雷厉风行    时间: 2010-4-25 00:07

这方面完全不懂,可以帮忙改一下吗
作者: 雷厉风行    时间: 2010-4-26 10:37

改了也是一样怎样修改
作者: namejm    时间: 2010-4-26 11:44

  楼主,你到底想提取哪部分的内容?你在顶楼说清楚了吗?光给一段代码,试问谁有这个闲情逸致去揣测你的本意?你想要的顺序究竟是一种什么顺序,别人能看懂吗?论坛里人才济济,为什么这个帖子放了好几天都没什么人回帖,你想过原因吗?

  请花点时间来阅读这篇文章:亲爱的楼主,你会提问吗:http://bbs.bathome.net/thread-7690-1-1.html
作者: 雷厉风行    时间: 2010-4-26 13:24

@echo off & setlocal enabledelayedexpansion
echo 在处理请耐心等待………………
cd /d D:\招商\RemoteSH\
echo.>汇总.tx&del 汇总.txt 1>nul 2>nul
for /f "tokens=*" %%x in ('dir /b *.txt') do (
set n=0
findstr "☆曾用名" "%%~x" >>汇总.tx
for /f "tokens=1 delims=:" %%a in ('findstr /n "大股东进出" "%%~x"') do set /a x1=%%a-1
for /f "tokens=1 delims=:" %%a in ('findstr /n "所属行业:" "%%~x"') do set /a xx1=%%a-1
for /f "tokens=1 delims=:" %%a in ('findstr /n "证监会行业:" "%%~x"') do set /a xx2=%%a-1
for /f "tokens=1 delims=:" %%a in ('findstr /n /c:"────────────" "%%~x"') do (
  if %%a gtr !x1! set /a n+=1
  if !n! lss 3 set /a x2=%%a+1
)
set xxx=  &call :x !xx1! "%%~x" !xx2!
echo.!xxx!>>汇总.tx
call :xx !x1! "%%~x" !x2!
echo.>>汇总.tx
)
ren 汇总.tx 汇总.txt
start 汇总.txt
exit
:x
for /f "skip=%1 tokens=1,* delims=: " %%a in ('findstr /n .* %2') do (
if %%a lss %3 (set xxx=!xxx!%%b) else (goto :eof)
)
:xx
for /f "skip=%1 tokens=1,* delims=:" %%a in ('findstr /n .* %2') do (
if %%a lss %3 (echo.%%b) else (goto :eof)
)>>汇总.tx

上面代码能将行业的分段落也可以提取,但不知为何部分文本总是不提取如600009这个代码。

@echo off & setlocal enabledelayedexpansion
echo 在处理请耐心等待………………
set "_s=  ─────────────────────────────────────"
for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
set "n="
(for /f "usebackq delims=" %%j in ("%%i") do (
    set "str=%%j"
    if "!str:☆曾用名=!" neq "%%j" echo;%%j
    if "!str:所属行业:=!" neq "%%j" echo;%%j
    if "!str: 大股东进出 =!" neq "%%j" set "m=0"
    if "!m!" equ "0" (
       set /a n+=1
       set "_!n!=%%j"
       if "!str:总  计=!" neq "%%j" set "m=1"
     )
   )
    for /l %%a in (1 1 !n!) do echo !_%%a!
    echo %_s%&echo;)>>汇总.txt
)
pause

这个出现2问题未能将行业的分段落内容提取和不按顺序提取问题出在600093开始接着本来是600094变成提取900***开头的,如何修改成按文件夹排列图标-类型的顺序就好。

上面公式基本完善只出现一个问题不按文本名称顺序提取,如何修改成按文件夹排列图标-类型的顺序或名称排序就好。问题自600093开始进入9字头。文本全部名称是由600000-600999-601***-900901--900**
提取文本按名称排序或类型排序也可以
作者: 雷厉风行    时间: 2010-4-26 13:27

哪位高手来写个或帮忙完善一下。
作者: namejm    时间: 2010-4-26 13:35

  1、文本名称或类型的顺序,文本名称的规律是什么?除了6位纯数字还有什么其他的吗?你提供的文件除了txt,看不出还有什么其他类型,亲爱的楼主,您就不能在顶楼一次性把所有可能产生疑惑或歧义的地方交代清楚吗?非得别人问一句你再解释一句?
  2、“(将这里分段落除去变成这样)”,亲爱的楼主,这句话到底什么意思?“这样”究竟是什么样?
  3、是把所有的内容保存在一个文件中,还是与原文一一对应保存为多个文件?
作者: 雷厉风行    时间: 2010-4-26 14:02

这批处理都搞了我10天了
文件夹内全部都是txt文本,代码有由600***-600999-601***-900***
另外一个文件夹由00001-000999和002***和200***
想提取后会成一个txt格式文本。
(将这里分段落除去变成这样)是原来有空段落的将其去掉,
在我测试文件中已经有一个汇总文本

[ 本帖最后由 雷厉风行 于 2010-4-26 14:04 编辑 ]
作者: 雷厉风行    时间: 2010-4-26 14:15

提取后的效果图
作者: namejm    时间: 2010-4-26 21:20

  亲爱的楼主,我求求你,求求你把所有的需求更新在顶楼行吗?如果这个帖子有N页,我是不是得把N*15个帖子都翻完才有可能完整地了解你的意图?有这个时间,我早就看了N个笑话,玩了几盘游戏了。
  我求求你,能不能除了贴图,你还能不能用详细的文字描述你现在碰到的问题吗?为了搞明白哪些地方折行显示,我是不是得点开所有的txt,一行一行地去看?我的天呐,有这个时间,我都不知道自己游戏里的级别是不是都升了好几级、软件又试了好几打?
  如果楼主希望大家帮你总结归纳,那您就慢慢地等吧。5楼提到的那篇文章,空了你再慢慢看吧。
作者: 雷厉风行    时间: 2010-4-26 22:55

贾君鹏,你妈妈喊你回家吃饭”
作者: 雷厉风行    时间: 2010-4-26 22:56

去你妈妈的............




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