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

[文本处理] 【已解决】批处理文本内容的检查相关,谢谢你了

[复制链接]
发表于 2021-5-19 20:21:15 | 显示全部楼层 |阅读模式
本帖最后由 灯塔彭于晏 于 2021-5-20 12:39 编辑

谢谢你了先。

现有一个1.txt,内容如下:
  1. [#魔法少女まどか☆マギカ ひとりぼっちはさびしいけれど - 九十九  - pixiv|https://baidu.com/artworks/21383799]
  2. [#魔法少女まどか☆マギカ よろしい、ならば - hatsuko  - pixiv|https://baidu.com/artworks/17587458]
  3. [#魔法少女まどか☆マギカ . - 望月けい  - pixiv|https://baidu.com/artworks/88431986]
  4. [#赤い影 世界を変える力が - hatsuko  - pixiv|https://baidu.com/artworks/16996640]
  5. [#魔法少女まどか☆マギカ 魔法少女 - vient  - pixiv|https://baidu.com/artworks/31068063]
  6. [#魔法少女まどか☆マギカ 奇迹の呗 - 觉醒  - pixiv|https://baidu.com/artworks/17345647]
  7. 魔法少女小圆
  8. [#魔法少女まどか☆マギカ ひとりぼっちはさびしいけれど - 九十九  - pixiv|https://baidu.com/artworks/21383799]
  9. [#魔法少女まどか☆マギカ よろしい、ならば - hatsuko  - pixiv|https://baidu.com/artworks/17587458]
  10. [#魔法少女まどか☆マギカ . - 望月けい  - pixiv|https://baidu.com/artworks/88431986]
  11. [#赤い影 世界を変える力が - hatsuko  - pixiv|https://baidu.com/artworks/16996640]
  12. [#魔法少女まどか☆マギカ 魔法少女 - vient  - pixiv|https://baidu.com/artworks/31068063]
  13. [#魔法少女まどか☆マギカ 奇迹の呗 - 觉醒  - pixiv|https://baidu.com/artworks/17345647]
  14. 魔法少女小圆
  15. 鹿目圆
  16. 晓美焰
  17. [#魔法少女まどか☆マギカ ひとりぼっちはさびしいけれど - 九十九  - pixiv|https://baidu.com/artworks/21383799]
  18. [#魔法少女まどか☆マギカ よろしい、ならば - hatsuko  - pixiv|https://baidu.com/artworks/17587458]
  19. [#魔法少女まどか☆マギカ . - 望月けい  - pixiv|https://baidu.com/artworks/88431986]
  20. [#赤い影 世界を変える力が - hatsuko  - pixiv|https://baidu.com/artworks/16996640]
  21. [#魔法少女まどか☆マギカ 魔法少女 - vient  - pixiv|https://baidu.com/artworks/31068063]
  22. [#魔法少女まどか☆マギカ 奇迹の呗 - 觉醒  - pixiv|https://baidu.com/artworks/17345647]
  23. 魔法少女小圆
  24. 鹿目圆
复制代码
上述内容为 3组内容(实际上更多) ,每组内容为6个[#开头的行 + 几个中文字的行 ,其中 [#开头的行是固定为6个的,不能多也不能少,而中文字的行,几行都行,没有要求。
每行内容最后的数字,和桌面上的  数字.jpg 文件是对应的。

现在的需求是:
1、检查1.txt中,每组内容中 [# 开头的行,是否为固定6个 。因为有时候会保存出错,[#少了1个或者多了1个。
2、检查1.txt中,每组内容最后的数字,在桌面上是否存在对应的 数字.jpg 文件。

比如文本中第一行的:[#魔法少女まどか☆マギカ ひとりぼっちはさびしいけれど - 九十九  - pixiv|https://baidu.com/artworks/21383799] , 桌面上应该要有一个 21383799.jpg 的文件。

检查的结果分别输出到A.txt(记录[#数量不对的行数)和B.txt (记录缺少文件的数字,每行1个)中  ,如果都对,就不输出相关TXT。

谢谢~谢谢!
 楼主| 发表于 2021-5-19 20:22:15 | 显示全部楼层
抱歉,我似乎上传不了附件,就劳烦您复制代码保存了。抱歉!
发表于 2021-5-19 23:03:31 | 显示全部楼层
本帖最后由 newswan 于 2021-5-20 06:44 编辑

  1. @echo off
  2. setlocal enabledelayedexpansion

  3. set path=%gnupath%;%path%
  4. set r=0
  5. set n=0
  6. for /f "delims=" %%a in (1.txt) do (
  7.     set /a r+=1
  8.     set s=%%a
  9.     if "!s:~0,1!"=="[" (
  10.         set /a n+=1
  11.         for /f "usebackq delims=" %%a in (`echo "%%a" ^| grep -E -o '[0-9]+'`) do (
  12.             if not exist "%USERPROFILE%\desktop\%%a.jpg" echo !r!: %%a >>a.txt
  13.         )
  14.     ) else (
  15.         if !n! neq 0 (
  16.             if !n! neq 6 echo !r!: !n! >>b.txt
  17.         )
  18.         set /a n=0
  19.     )
  20. )
复制代码
语法错误,已修改
 楼主| 发表于 2021-5-20 01:41:07 | 显示全部楼层
回复 3# newswan


    似乎是没有效果的。
发表于 2021-5-20 06:50:38 | 显示全部楼层
  1. @echo off
  2. set n=0
  3. setlocal enabledelayedexpansion
  4. for /f "tokens=1* delims=:" %%a in ('findstr /n .* 1.txt') do (
  5.     set "str=%%b"
  6.     if "!str:~,2!"=="[#" (
  7.         set "str1=%%~nb"
  8.         if not exist "%HOMEPATH%\Desktop\!str1:~,-1!.jpg" echo,%%a:不存在文件!str1:~,-1!.jpg!>>b.txt
  9.         set /a n+=1
  10.     ) else (
  11.         if not !n!==0 if not !n!==6 echo,第%%a行上面一组有!n!行组成!>>a.txt
  12.         set n=0
  13.     )
  14. )
  15. pause
复制代码
批处理文件和1.txt放在同一个目录。

评分

参与人数 1技术 +1 收起 理由
灯塔彭于晏 + 1 谢谢大giegie,完美了。

查看全部评分

发表于 2021-5-20 12:27:53 | 显示全部楼层
本帖最后由 xp3000 于 2021-5-20 17:47 编辑
  1. @echo off&Setlocal EnableDelayedExpansion
  2. set m=0&set n=0&type nul>"不存在的文件.TXT"&echo 开始读取文件 1.txt……
  3. @for /f "delims=" %%a in ('type 1.txt^|findstr /n .*') do (set /a n+=1&set A=%%a
  4.     @for /f tokens^=1^,2^,3^,*^ delims^=:""^| %%c in ('echo "!A!"^|findstr /r /n /C:"^\[.*http.*\]"') do (
  5.         set C=%%c&set D=%%d&set E=%%e&set F=%%~f&set F=!F:^]^"=!&set fn=%%~nf&set fn=!fn:^]^"=!)
  6.     if !n!==!D! (set /a m+=1
  7.     if !m! equ 1 echo._____________________&echo.
  8.         echo 检测第!n!行:!F!
  9.     if not exist "%USERPROFILE%\desktop\!fn!.jpg" (echo 桌面没有:!fn!.jpg&echo !fn!.jpg>>"不存在的文件.TXT") else (echo 桌面发现:!fn!.jpg)
  10.              ) else (
  11.     if !m! neq 0 echo.& echo   以上段落共:!m! 行&echo._____________________&echo.
  12.           echo  !n!行非匹配,中断行!D!&set m=0
  13.     )
  14. )
  15. echo._____________________&echo.&echo    1.txt 共 !n! 行&echo.
  16. pause
复制代码
整理了下,全部下划杠分段好看一点

评分

参与人数 1技术 +1 收起 理由
灯塔彭于晏 + 1 谢谢大giegie,但这个可以检测缺的文件,不 ...

查看全部评分

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

本版积分规则

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

GMT+8, 2026-3-20 15:59 , Processed in 0.022684 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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