Board logo

标题: [文本处理] 批处理怎样计算出每个文本里面有多少行? [打印本页]

作者: z1366870839    时间: 2018-9-14 02:31     标题: 批处理怎样计算出每个文本里面有多少行?

有几万个文本,但是想知道它每个文本里面有多少行

比如文本是
13国_*****.txt   有80行
46国_*****.txt   有560行
123国_*****.txt   有990行
153国_*****.txt   有4行
193国_*****.txt   有30行


批处理后出现一个文本里面写出每个文本里面有多少行,只要193国_*****.txt  前面这个193国_**个

处理后:
13国_80个
46国_560个
123国_990个
153国_4个
193国_30个
作者: Batcher    时间: 2018-9-14 09:05

会计算单个文件多少行吗?选个你喜欢的代码试试看能否得到正确的结果:
http://bbs.bathome.net/thread-474-2-1.html#pid28474
作者: z1366870839    时间: 2018-9-14 17:26

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost
作者: z1366870839    时间: 2018-9-14 23:01

回复 2# Batcher


    我这个是很多文本的,你呢些都是单文本的
作者: z1366870839    时间: 2018-9-15 06:43

回复 2# Batcher


    您好,您那个连接是单文本处理的,我这是一个文件夹里面几百个文本,没办法处理到
作者: z1366870839    时间: 2018-9-15 23:32

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
作者: z1366870839    时间: 2018-9-15 23:32     标题: 批处理怎样计算每个文本有多少行?

有几万个文本,但是想知道它每个文本里面有多少行

比如文本是
13国_*****.txt   有80行
46国_*****.txt   有560行
123国_*****.txt   有990行
153国_*****.txt   有4行
193国_*****.txt   有30行


批处理后出现一个文本里面写出每个文本里面有多少行,只要193国_*****.txt  前面这个193国_**个

处理后:
13国_80个
46国_560个
123国_990个
153国_4个
193国_30个
作者: ai20110304    时间: 2018-9-16 00:09

  1. @echo off
  2. for %%i in (*_*.txt) do (
  3. setlocal enabledelayedexpansion
  4. set num=0
  5. for /f "tokens=1 delims=:" %%x in ('findstr /n .* %%i') do set "num=%%x"
  6. set "str=%%i" & set "ext=%%~xi"
  7. set "suffix=!str:*_=!"
  8. set "prefix=!str:!suffix!=!"
  9. ren "!str!" "!prefix!!num!!ext!个"
  10. endlocal
  11. )
复制代码
回复 1# z1366870839
没测试过。你试试吧。
作者: z1366870839    时间: 2018-9-16 06:43

回复 2# ai20110304


    您好,您这个是在原文件直接改为数字,不是生成新的文本,然后列出来,也没显示有多少国~不过还是谢谢你
作者: ai20110304    时间: 2018-9-16 08:37

回复 3# z1366870839


    哦哦。没看到把相应的文件生成在新文件中显示。以为直接重命名
作者: ai20110304    时间: 2018-9-16 08:50

  1. for %%i in (*_*.txt) do (
  2. setlocal enabledelayedexpansion
  3. set num=0
  4. for /f "tokens=1 delims=:" %%x in ('findstr /n .* %%i') do set "num=%%x"
  5. set "str=%%i" & set "ext=%%~xi"
  6. set "suffix=!str:*_=!"
  7. call,set "prefix=%%str:!suffix!=%%"
  8. ::ren "!str!" "!prefix!!num!!ext!个"
  9. echo;!prefix!!num!个 >>list.txt
  10. endlocal
  11. )
复制代码
回复 4# ai20110304

你再试试。现在是不是你想要的格式。
作者: z1366870839    时间: 2018-9-17 00:10

回复 5# ai20110304


    您好,您这个能重新生成文本了,但是识别不出来里边有多少行
作者: ai20110304    时间: 2018-9-17 20:45

回复 6# z1366870839


    我这边测试都能啊。。。是不是你运行的位置不对
作者: ai20110304    时间: 2018-9-17 20:46

回复 6# z1366870839

在脚本代码开头,添加  一条语句   cd /d %~dp0
    把脚本放在你要处理的位置。
作者: z1366870839    时间: 2018-9-17 23:26

回复 8# ai20110304


    您好,这样还是不行呢
作者: z1366870839    时间: 2018-9-17 23:26

回复 9# z1366870839


    可以处理了
作者: z1366870839    时间: 2018-9-17 23:30

回复 8# ai20110304


    有部分是处理错误的数据,看不出是哪个代码出错。。。
作者: z1366870839    时间: 2018-9-17 23:31

回复 8# ai20110304


    *_*.txt

前面的*必须是三位数才能处理正确,两位数无法处理的呢
作者: /zhqsystem/zhq    时间: 2018-9-18 00:02

本帖最后由 /zhqsystem/zhq 于 2018-9-19 00:33 编辑

水一个
更改后的无错误代码:
(call:1)>new.txt
exit
:1
for /f "delims=" %%i in ('dir/a-d/s/b ".\*.txt"')do (
set $=0&&for /f "delims=:" %%n in ('findstr/n .* "%%~fi"')do set "$=%%n"
call set "#%%~fi=%%$%%"
call echo,%%~nxi        %%$%%
)
goto:eof
作者: z1366870839    时间: 2018-9-18 01:00

回复 13# /zhqsystem/zhq


    哥,这个能扫,但是它不导出文本
作者: z1366870839    时间: 2018-9-18 23:45     标题: 把这个bat计算的东西输入一个文本

把这个bat计算的东西输入一个文本
  1. for /f "delims=" %%i in ('dir/a-d/s/b ".\*.txt"')do (
  2. set $=0&&for /f "delims=:" %%n in ('findstr/n .* "%%~fi"')do set "$=%%n"
  3. call set "#%%~fi=%%$%%"
  4. call echo,%%~nxi        %%$%%
  5. )
复制代码

作者: z1366870839    时间: 2018-9-18 23:46

  1. for /f "delims=" %%i in ('dir/a-d/s/b ".\*.txt"')do (
  2. set $=0&&for /f "delims=:" %%n in ('findstr/n .* "%%~fi"')do set "$=%%n"
  3. call set "#%%~fi=%%$%%"
  4. call echo,%%~nxi        %%$%%
  5. echo;#%%~fi=%%$%%个>>1.txt
  6. )
复制代码
我弄成这样无法输出正确
作者: /zhqsystem/zhq    时间: 2018-9-19 00:33

回复 14# z1366870839
代码已更改完整,
删除新发重复帖
作者: z1366870839    时间: 2018-9-19 00:47

回复 15# /zhqsystem/zhq


    这个扫一下会乱码。。。
作者: /zhqsystem/zhq    时间: 2018-9-19 01:07

回复 16# z1366870839
懵圈中。。。这又不是二维码,别扫了,没加什么就是加了几个CALL子调用,原理都是一样的,(原内容)>导出,子调用便于局域化重复执行N次
作者: 窄口牛    时间: 2018-9-19 07:12

each的=前后如果是数字需要^转义。
作者: hlzj88    时间: 2018-9-19 07:29

试了下,上面的真不好输出,给写了下面的,你试试
  1. @echo off&&setlocal enabledelayedexpansion
  2. for /f %%i in ('dir /b/on *.txt') do (
  3. set aa=
  4. for /f "tokens=2 delims=:" %%a in ('find /c /v "" %%i')do set/a aa=%%a
  5. echo %%i 共!aa!行>>3.txt
  6. )
  7. pause
复制代码





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