Board logo

标题: [文本处理] 批处理如何获取指定文件夹下每个txt文本除了第一行和空白行外的行数并添加到文件名里 [打印本页]

作者: cloudinamoy    时间: 2013-8-18 23:00     标题: 批处理如何获取指定文件夹下每个txt文本除了第一行和空白行外的行数并添加到文件名里

本帖最后由 pcl_test 于 2016-8-9 10:39 编辑

BAT怎样统计文件夹下txt文档的行数并重命名文件?
我想统计文件夹下及子文件夹下所有txt文档的行数并重命名文件
确切地说,我想统计文本除了第一行其他所有行但不包含空行,假设a.txt统计出的行数是num,然后将该文件重命名为anum.txt,求助啊,折腾了好久没弄出了
作者: terse    时间: 2013-8-19 00:19

  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /a-d /s *.txt') do (
  3. (more +1 "%%i" |findstr . |find /v /c "")>$
  4. for /f %%j in ($) do echo ren "%%i" %%~ni%%j%%~xi
  5. )
  6. del $
  7. pause
复制代码

作者: CrLf    时间: 2013-8-19 01:59

调用第三方工具 sed 和 uniq:
  1. @echo off
  2. for /f "tokens=1*" %%a in ('findstr /s /n . *.txt 2>nul ^| sed "/[^:]*:1:/d;s/:.*//" ^| uniq -c') do (
  3.    ren "%%b" "%%~nb%%a.txt"
  4. )
复制代码

作者: cloudinamoy    时间: 2013-8-19 19:15

回复 2# terse

怎么找不到重命名的文件?
作者: cloudinamoy    时间: 2013-8-19 19:16

回复 3# CrLf

第三方工具不懂啊
作者: cloudinamoy    时间: 2013-8-19 19:42

根据上面的启发写出来了,谢谢!
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. @set filepath=G:\批处理\20130819
  4. for /r %filepath% %%a in (*.txt) do (
  5. @set /a num=0
  6. for /f " skip=1 " %%b in (%%a) do (set /a num+=1)
  7. ren %%a  %%~na!num!%%~xa
  8. )
  9. pause
复制代码

作者: terse    时间: 2013-8-19 21:08

回复 4# cloudinamoy
去掉 后面 echo 即可
作者: cloudinamoy    时间: 2013-8-19 21:34

回复 7# terse


    哦,是哦,怎么没看出来,谢啦~
作者: gawk    时间: 2013-8-19 22:08

回复 5# cloudinamoy


    不懂没关系,下载之后放到system32文件夹下面就能直接调用了。
作者: cloudinamoy    时间: 2013-8-20 13:10

回复 9# gawk


    哦,谢谢!




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