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

[文本处理] 【已解决】请帮忙给txt增加空白行的bat脚本

[复制链接]
发表于 2024-1-27 16:56:57 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2024-1-27 19:06:41 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2024-4-3 10:03:18 | 显示全部楼层
回复 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章 奥特曼

(案例结束)

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

该怎么修改?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 02:45 , Processed in 0.017167 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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