找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22664|回复: 9

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

[复制链接]
发表于 2022-4-6 18:41:28 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码
已解决!
发表于 2022-4-6 19:17:59 | 显示全部楼层
回复 1# czvde


    大于10行算满足还是不满足?
 楼主| 发表于 2022-4-6 19:19:53 | 显示全部楼层
本帖最后由 czvde 于 2022-4-6 19:21 编辑

回复 2# Batcher

查找的文件,文本内容有10行以上(包含10行)都把文件名输出到a.txt
发表于 2022-4-6 19:25:02 | 显示全部楼层
回复 3# czvde


    顶楼的例子里面456.txt有个空行,abc.txt也有个空行,为何一个满足另一个不满足?
 楼主| 发表于 2022-4-6 19:28:13 | 显示全部楼层
回复 4# Batcher


    已修正abc.txt文本内容
发表于 2022-4-6 20:11:14 | 显示全部楼层
  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
复制代码

评分

参与人数 1技术 +1 收起 理由
czvde + 1 好用,谢谢

查看全部评分

发表于 2022-4-6 21:41:11 | 显示全部楼层
回复 5# czvde


    如果abc.txt总行数是11,但是有2个空行,算满足吗?
 楼主| 发表于 2022-4-7 00:18:06 | 显示全部楼层
回复 7# Batcher


   1楼已重新修改要求
发表于 2022-4-7 09:24:30 | 显示全部楼层
如果各个文本文件行数不多的话,可以考虑下面代码。未测试:
  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
复制代码

评分

参与人数 1技术 +1 收起 理由
czvde + 1 谢谢

查看全部评分

发表于 2022-4-7 13:27:13 | 显示全部楼层
回复 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. )
复制代码

评分

参与人数 1技术 +1 收起 理由
czvde + 1 谢谢

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 05:56 , Processed in 0.019691 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表