[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 18# kokoxx


   应该是 猜你喜欢: 这个字符串在原文中没有找到。
使用你提供的文件,我这里测试正常。
bat小白,请多指教!谢谢!

TOP

回复 17# 77七


    感谢大佬答复

我这边将关键词去掉冒号(将`find /n "猜你喜欢:" ^<"%%i"`   改成`find /n "猜你喜欢" ^<"%%i"`   )测试成功

至于为啥要去掉冒号才成功,我也不知道为什么~

TOP

回复 12# kokoxx


  
  1. @echo off
  2. rem 批处理保存为utf-8编码格式
  3. chcp 65001 >nul
  4. for /f "useback delims=" %%i in (`dir /b /a-d *.txt`) do (
  5. setlocal
  6. for /f "useback tokens=1* delims=[]" %%a in (`find /n "猜你喜欢:" ^<"%%i"`) do (
  7. set _"%%a"=1
  8. )
  9. for /f "useback tokens=1* delims=[]" %%a in (`find /n "更多推荐:" ^<"%%i"`) do (
  10. set _"%%a"=1
  11. )
  12. (for /f "useback tokens=1* delims=[]" %%a in (`find /n /v "" ^<"%%i"`) do (
  13. if not defined _"%%a" (
  14. echo=%%b
  15. ) else (
  16. echo=
  17. )
  18. ))>$
  19. move $ "%%i"
  20. endlocal
  21. )
  22. pause
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 kokoxx 于 2023-9-25 11:13 编辑

回复 15# Batcher



    我是直接将测试样本里的对应文本(包括冒号)复制粘贴的,最起码的关键词替换我还是懂的……

TOP

回复 14# kokoxx


    12楼给的例子是中文冒号,14楼给的样本是英文冒号。你根据实际情况修改代码再试试吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 13# Batcher


感谢大佬百忙中出手,不过我这边测试无效T-T

附带一个测试失败的样本:

    https://www.123pan.com/s/pbxrVv-ROAY.html

TOP

回复 12# kokoxx
  1. @echo off
  2. chcp 65001 >nul
  3. cd /d "%~dp0"
  4. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  5.     echo %%i
  6.     findstr /i /v /c:"猜你喜欢:" /c:"更多推荐:" "%%i" > "%%i.ttttt"
  7.     move /y "%%i.ttttt" "%%i" >nul
  8. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11# 77七


    大佬,又来叨扰您了

请问bat能否做到查找同文件夹下的*.txt中包含有“猜你喜欢:”和“更多推荐:”的一行后,将其所在的一行替换为空行

举例:

【原版】

我是奥特曼
猜你喜欢:斗破苍穹 武动乾坤 神墓
更多推荐:斗破苍穹 武动乾坤 神墓
你也是奥特曼

【修改后效果】

我是奥特曼


你也是奥特曼

TOP

回复 10# kokoxx


  
  1. @echo off
  2. rem 批处理保存为utf-8编码格式
  3. chcp 65001 >nul
  4. for /f "useback delims=" %%i in (`dir /b /a-d *.txt`) do (
  5. (for /f "useback tokens=1* delims=[]" %%a in (`find /n /v "" ^<"%%i"`) do (
  6. echo=
  7. echo=%%b
  8. ))>$
  9. move $ "%%i"
  10. )
  11. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 9# 77七


    最后一个问题

如何用bat在同文件夹下*.txt的行与行之间增加一个空白行?

-- 嗯,我知道这个功能用wps或word可以很轻松实现,但是代价是wps/word处理大体积txt(超过5m)时,会出现卡死崩溃现象

-- 本来是想单独再发一个求助帖,不过有自我觉得这么搞有发垃圾求助帖的嫌疑,就只能再叨扰大佬了(捂脸)~

举例:

【原版(不包括引号)】

我是奥特曼
你也是奥特曼



【修改后版本(不包括引号)】


我是奥特曼

你也是奥特曼

TOP

回复 8# kokoxx


   
代码第6行改为
  1. for /f "useback tokens=1* delims=[]" %%a in (`find /n /v "" ^<"%%i" ^|find "]第" ^|find "章" ^|find /v "此行不做添加空行处理"`) do (
复制代码
bat小白,请多指教!谢谢!

TOP

回复 5# 77七


大佬,试过了你的脚本,确实有用

追加一个提问:

如果我要实现 文本行同时出现“第x章”和“此行不做添加空行处理”(举例,可以在代码里修改成任意值)字样,就不做添加空行处理,该怎么在原有代码的基础上做修改

举例:

【原版】

我是赛罗奥特曼
第1章 变身
我是泰罗奥特曼
第2章 此行不做添加空行处理
我是迪迦奥特曼

【修改后效果】

我是赛罗奥特曼



第1章 变身



我是泰罗奥特曼
第2章 此行不做添加空行处理
我是迪迦奥特曼

TOP

不知行否,会在原本文件名前面添加new_创建新文件
  1. @echo off
  2. set "z=绗.*绔"
  3. chcp 65001
  4. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  5. setlocal
  6. (for /f "delims=" %%k in ('findstr /n .* "%%i"') do (
  7. set "str=%%k"
  8. setlocal enabledelayedexpansion
  9. echo=!str:*:=!|findstr /i /b  "!z!" 1>nul && set aaa=1
  10. if defined aaa (
  11. echo=&echo=&echo=
  12. echo=!str:*:=!
  13. echo=&echo=&echo=
  14. set aaa=
  15. ) else (
  16. echo=!str:*:=!
  17. )
  18. endlocal
  19. ))>"new_%%i.txt"
  20. endlocal
  21. )
  22. chcp 936&echo done&pause&exit /b
复制代码

TOP

wfr
http://bcn.bathome.net/tool/wfr.exe

  1. wfr *.txt /encin:utf-8 /encout:utf-8 -r:"^\s*第\s*\d+\s*章.*" -t:"\n\n\n\0\n\n\n"
复制代码
bat小白,请多指教!谢谢!

TOP

  1. @echo off
  2. rem 批处理保存为utf-8编码格式
  3. chcp 65001 >nul
  4. for /f "useback delims=" %%i in (`dir /b /a-d *.txt`) do (
  5. setlocal
  6. for /f "useback tokens=1* delims=[]" %%a in (`find /n /v "" ^<"%%i" ^|find "]第" ^|find "章"`) do (
  7. set _"%%a"=1
  8. )
  9. (for /f "useback tokens=1* delims=[]" %%a in (`find /n /v "" ^<"%%i"`) do (
  10. if not defined _"%%a" (
  11. echo=%%b
  12. ) else (
  13. echo=
  14. echo=
  15. echo=
  16. echo=%%b
  17. echo=
  18. echo=
  19. echo=
  20. )
  21. ))>$
  22. move $ "%%i"
  23. endlocal
  24. )
  25. pause
复制代码

使用前先备份!可能会有误差,如果”章“后面有个空格,代码改为 find "章 " 误差应该小点
bat小白,请多指教!谢谢!

TOP

返回列表