Board logo

标题: [文件操作] [已解决]查找文件夹文本内容判断,符合条件则输出 [打印本页]

作者: czvde    时间: 2022-4-6 18:41     标题: [已解决]查找文件夹文本内容判断,符合条件则输出

本帖最后由 czvde 于 2022-4-8 11:55 编辑

文件夹中有3个文件:
123.txt
456.txt
abc.txt


123.txt
  1. 123
  2. 3
  3. 123
  4. 1
  5. 123
  6. 1
  7. 123
  8. 1
  9. 123
  10. 1
复制代码
456.txt
  1. 1
  2. 2
  3. 1111
  4. 3
  5. 1111
  6. 1
  7. 1111
  8. 1
  9. 1111
复制代码
abc.txt
  1. 1
  2. 2
  3. 1111
  4. 3
  5. 1
  6. 1
  7. 1111
  8. 1
复制代码
批处理运行之后,生成a.txt的文本内容为
  1. 123.txt
  2. 456.txt
复制代码
生成b.txt的文本内容为
  1. 123.txt
复制代码
已解决!
作者: Batcher    时间: 2022-4-6 19:17

回复 1# czvde


    大于10行算满足还是不满足?
作者: czvde    时间: 2022-4-6 19:19

本帖最后由 czvde 于 2022-4-6 19:21 编辑

回复 2# Batcher

查找的文件,文本内容有10行以上(包含10行)都把文件名输出到a.txt
作者: Batcher    时间: 2022-4-6 19:25

回复 3# czvde


    顶楼的例子里面456.txt有个空行,abc.txt也有个空行,为何一个满足另一个不满足?
作者: czvde    时间: 2022-4-6 19:28

回复 4# Batcher


    已修正abc.txt文本内容
作者: went    时间: 2022-4-6 20:11

  1. @echo off & cd /d "%~dp0"
  2. (
  3. for %%i in (*.txt) do (
  4. findstr /n .* %%i | findstr "^10" >nul 2>nul && echo %%i
  5. )
  6. )>"a.txt"
  7. pause&exit
复制代码

作者: Batcher    时间: 2022-4-6 21:41

回复 5# czvde


    如果abc.txt总行数是11,但是有2个空行,算满足吗?
作者: czvde    时间: 2022-4-7 00:18

回复 7# Batcher


   1楼已重新修改要求
作者: qixiaobin0715    时间: 2022-4-7 09:24

如果各个文本文件行数不多的话,可以考虑下面代码。未测试:
  1. @echo off
  2. set LineNum=10:
  3. for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
  4.     findstr /n .* %%a|findstr /b %LineNum%>nul
  5.     if not errorlevel 1 (
  6.         echo,%%a>>a.txt
  7.         findstr . %%a|findstr /n .|findstr /b %LineNum%>nul
  8.         if not errorlevel 1 echo,%%a>>b.txt
  9.     )
  10. )
  11. pause
复制代码

作者: Batcher    时间: 2022-4-7 13:27

回复 1# czvde
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4.     for /f "delims=" %%j in ('type "%%i" ^| find /v /c ""') do (
  5.         echo %%i [包含空行]: %%j
  6.         if %%j geq 10 (
  7.             >>"a.log" echo,%%i
  8.             for /f "delims=" %%k in ('findstr . "%%i" ^| find /v /c ""') do (
  9.                 echo %%i [不包含空行]: %%k
  10.                 if %%k geq 10 (
  11.                     >>"b.log" echo,%%i
  12.                 )
  13.             )
  14.         )
  15.     )
  16. )
复制代码





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