[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 hfxiang 于 2024-1-27 16:59 编辑

回复 30# kokoxx

可试一下sed( http://bcn.bathome.net/tool/4.9/sed.exe

假定 x=3,y=2
  1. sed -z -r  "s/^\n{3}\b/\n\n/;s/\b\n{4}\b/\n\n\n/g" 1.txt>2.txt
复制代码
假定 x=3~10,y=2
  1. sed -z -r  "s/^\n{3,10}\b/\n\n/;s/\b\n{4,11}\b/\n\n\n/g" 1.txt>2.txt
复制代码

TOP

回复 30# kokoxx


  
  1. @echo off
  2. rem 批处理保存为utf-8编码格式
  3. chcp 65001 >nul
  4. cd /d "%~dp0"
  5. set /a x=3,y=2
  6. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  7. setlocal
  8. (for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"%%i"') do (
  9. if "%%b" equ "" (
  10. set /a n+=1
  11. ) else if defined n (
  12. set /a m=n/x*y+n%%x
  13. set n=
  14. setlocal enabledelayedexpansion
  15. for /l %%l in (1,1,!m!) do (
  16. echo=
  17. )
  18. endlocal
  19. echo=%%b
  20. ) else (
  21. echo=%%b
  22. )
  23. ))>$
  24. move $ "%%i"
  25. endlocal
  26. )
  27. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 32# 77七


    大佬您好,您之前写过一个脚本,用于删除txt包含特定文本(比如“标签”)的文本行附近的文本行
  1. @echo off
  2. chcp 65001 >nul
  3. for /f "useback delims=" %%i in (`dir /b /a-d *.txt`) do (
  4. setlocal
  5.             for /f "useback tokens=1* delims=[]" %%a in (`find /n "标签" ^<"%%i"`) do (
  6. for %%x in ( 0 ) do (
  7. set /a n=%%a+%%x
  8. call set _"%%n%%"=1
  9. )
  10. )
  11. (for /f "useback tokens=1* delims=[]" %%a in (`find /n /v "" ^<"%%i"`) do (
  12. if not defined _"%%a" (
  13. echo=%%b
  14. )
  15. ))>$
  16. move $ "%%i"
  17. endlocal
  18. )
  19. pause
复制代码
现在想用类似的bat写法实现

【处理前】

=== 第1章奥特曼

【处理后】

=== 第1章 奥特曼

(案例结束)

也就是将符合标准的文本行(关键词是“=== 第”)中的“章”变成“章 ”

该怎么修改?

TOP

返回列表