Board logo

标题: [文本处理] 批处理如何实现以关键词+固定字符为文件名分别输出行数统计? [打印本页]

作者: wh1234567    时间: 2012-3-8 15:20     标题: 批处理如何实现以关键词+固定字符为文件名分别输出行数统计?

本帖最后由 wh1234567 于 2012-3-8 22:29 编辑

set Area=美女,丑女,好书
.....
......>>%%i结果.txt
美女结果.txt
丑女结果.txt
好书结果.txt
如何分别以关键词+结果.txt为文件名统计行数,和全部关键词+结果.txt为文件名的多个文本的总共行数统计
在代码里添加什么命令代码,添加到哪里即可实现?
要求显示的统计数在最后,例如set /A Sum=Sum+1
echo    %%i结果.txt共计:%hangshu% 行
......
echo    全部关键词%geshu%个  无效关键词 %%i 共%wuxiao%个  输出有效全部关键词+结果.txt   %jige%个文本   合计:%heji% 行
pause

%jige%个文本 也就是输出的有效关键词+结果.txt 的总文件个数
作者: BAT1    时间: 2012-3-8 15:41

论坛里有。。
作者: CrLf    时间: 2012-3-8 15:48

楼主怎么发了这么多帖子还是没学会怎么搜索和提问呢...
如果实在搜索不到也罢了,但是提问时至少要给出比较完整的背景啊,比如是统计单个文件还是多个文件、统计时是否忽略空行等等
作者: wh1234567    时间: 2012-3-8 20:24

论坛里没有搜索到。。希望坛友帮助
作者: find    时间: 2012-3-8 20:49

  1. @echo off
  2. set Area=美女,丑女,好书
  3. for %%a in (%Area%) do (
  4.     findstr "%%a" a.txt >%%a结果.txt
  5. )
复制代码

作者: terse    时间: 2012-3-8 21:44

本帖最后由 terse 于 2012-3-8 22:34 编辑

蒙一个楼主的意思 是否可行
  1. @echo off
  2. set Area=美女,丑女,好书
  3. for %%i in (%Area%) do (
  4.     if exist "%%i.TXT" (
  5.        set/a M+=1
  6.        for /f %%j in ('"find /v /c "" <%%i结果.TXT"') do echo %%i结果.TXT %%j行&set/a N+=%%j
  7.     )
  8. )
  9. echo 全部关键词 %M% 个文本  总行数 %N% 行
  10. pause
复制代码

作者: wh1234567    时间: 2012-3-8 22:30

本帖最后由 wh1234567 于 2012-3-8 23:37 编辑

回复 6# terse
感谢你理解了我的意思

    处理过程显示:
已完成对 丑女 的处理


正在处理的为: 好书

系统找不到指定的文件。

已完成对 好书 的处理


美女结果.TXT 28行
丑女结果.TXT 14行
好书结果.TXT 1行
全部关键词 3 个文本  总行数 43 行

好书结果.TXT里面输出的是无用字符,能不能将无效的不记录也不输出?也就是如果没有“好书.txt”的话就不记录“好书结果.TXT 1行”和不输出“好书结果.TXT”,这样的话
全部关键词 3 个文本  总行数 43 行
应该是
全部关键词 3 个  无效关键词 好书 共 1 个  输出有效全部关键词 2 个文本    输出有效总行数合计 42 行
作者: terse    时间: 2012-3-8 22:35

本帖最后由 terse 于 2012-3-8 22:44 编辑

回复 7# wh1234567
再试上面代码  先看下输出结果 看你要求 代码还是不能完成
作者: wh1234567    时间: 2012-3-8 22:50

回复 8# terse

代码可以执行,能不能将echo %%i结果.TXT %%j行放在括号外面方便我随意任意地方插入,另外能不能按照我上面表述的意思完美修改下代码
作者: wh1234567    时间: 2012-3-9 15:21     标题: 求助:批处理统计

@echo off
set Area=美女,丑女,好书
。。。。。。
echo 全部关键词 %M% 个
pause
作者: apang    时间: 2012-3-9 15:52

瞎猜,看对不对
  1. @echo off
  2. set Area=美女,丑女,好书
  3. for %%a in (%Area%) do set/a M+=1
  4. echo 全部关键词 %M% 个
  5. pause
复制代码

作者: wh1234567    时间: 2012-3-9 16:05

回复 2# apang


    是的,呵呵,能不能帮我完善http://www.bathome.net/thread-15799-1-1.html
作者: apang    时间: 2012-3-9 16:10

回复  apang


    是的,呵呵,能不能帮我完善
wh1234567 发表于 2012-3-9 16:05



    这个,实在是看不懂啥意思呢。。。
作者: wh1234567    时间: 2012-3-9 16:26

回复 4# apang


    现在就差“无效关键词 好书 共 1 个”和如果没有“好书.txt”的话就不输出“好书结果.TXT 1行”的代码了,你仔细看看
无效关键词是在处理命令过程中的记录
    处理过程显示:
已完成对 丑女 的处理


正在处理的为: 好书

系统找不到指定的文件。

已完成对 好书 的处理
作者: wh1234567    时间: 2012-3-9 16:56     标题: 批处理记录没输出的关键词和个数

本帖最后由 wh1234567 于 2012-3-9 17:21 编辑

例如:
关键词3个但输出只有2个,其中1个是无效没有输出。
美女.txt
丑女.txt

@echo off
set Area=美女,丑女,好书
.....
......>>%%i.txt

echo 无效关键词%W%   共%x% 个
pause
如何弄代码
作者: terse    时间: 2012-3-9 18:14

回复 9# wh1234567
  1. @echo off&setlocal enabledelayedexpansion
  2. set Area=美女,丑女,好书
  3. set NOT=&for %%i in (Num N M U) DO set %%i=0
  4. for %%i in (%Area%) do (
  5.     set /a Num+=1
  6.     if exist "%%i.TXT" (
  7.        set/a M+=1
  8.        for /f %%j in ('"find /v /c "" <%%i结果.TXT"') do echo %%i结果.TXT %%j行&set/a N+=%%j
  9.     ) ELSE SET /A U+=1&set Not=!Not! %%i
  10. )
  11. echo 全部关键词 %Num% 个文本  无效关键词!Not!  !U! 个 有效全部关键词 !M! 个文本    有效总行数合计 %N% 行
  12. pause
复制代码

作者: find    时间: 2012-3-9 18:55

回复 7# wh1234567


你最开始发帖就应该说清楚,不能老让别人猜啊!
作者: wh1234567    时间: 2012-3-10 01:05

本帖最后由 wh1234567 于 2012-3-10 23:18 编辑

回复 16# terse


    不错,就是这种的,
显示:
全部关键词 26个   无效关键词 美女 丑女 好书  3 个   有效全部关键词 23 个文本   有效总行数合计 211 行
请按任意键继续. . .
能不能将无效关键词用、分隔开来?例如:
无效关键词 美女、丑女、好书  3 个

另外
能不能把 echo %%i结果.TXT %%j行 也放到括号的外面也就是
    )
)
括号的下面这里?




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