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

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

RT,这个bat脚本的作用是

将bat脚本同一个文件夹下的*.txt打开

检测到txt内容中有一个文本行的开头是“第 xxx 章”(xx是阿拉伯数字,允许xxx前后有若干空格,或没有空格),则在该文本行之前和之后添加三个空白文本行

举例:

【原版】

我是谁啊啊啊
第 1 章 奥特曼
谁说的啊啊啊

【修改版】

我是谁啊啊啊



第 1 章 奥特曼



谁说的啊啊啊
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 2# qixiaobin0715


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

提取码:6666

TOP

回复 5# 77七


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

追加一个提问:

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

举例:

【原版】

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

【修改后效果】

我是赛罗奥特曼



第1章 变身



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

TOP

回复 9# 77七


    最后一个问题

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

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

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

举例:

【原版(不包括引号)】

我是奥特曼
你也是奥特曼



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


我是奥特曼

你也是奥特曼

TOP

回复 11# 77七


    大佬,又来叨扰您了

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

举例:

【原版】

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

【修改后效果】

我是奥特曼


你也是奥特曼

TOP

回复 13# Batcher


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

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

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

TOP

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

回复 15# Batcher



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

TOP

回复 17# 77七


    感谢大佬答复

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

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

TOP

回复 19# 77七


    大佬,我又双叒叕要叨扰您了~

还是处理txt文本,希望能实现如下功能:

查找定位bat同文件夹下*.txt中所有带.html的文本行

将该文本行连同该文本行上面的两个文本行和下面的一行文本行,替换成一个文本行

举例

【原版】

1我是是是是www啊啊
2www啊啊
3呜呜呜呜谁反对
4奥术大师多
5 1212.html 我说的
6阿勒泰堵塞
7阿萨德
8大额ad


【修改后版】

1我是是是是www啊啊
2www啊啊

7阿萨德
8大额ad

--------

测试样本

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

TOP

回复 21# 77七


    感谢大佬,测试通过

提问:如果我要实现在.html所在文本行上数4行,下数2行都做成空白行

就是将

for %%x in (-2 -1 0 1) do (

改成

for %%x in (-4 -3 -2 -1 0 1 2) do (

对吧?

TOP

回复 17# 77七


    大佬您好,时隔多日后,再度叨扰您

如果这里要求是将符合指定关键字条件(“猜你喜欢:”和“更多推荐”)的所在行直接删除,而不是将之变成一个空白行,将如何修改第14行的“echo=%%b”?

TOP

回复 11# 77七


    大佬,抱歉又来叨扰您了

您能不能出手写一个bat,实现将bat同文件夹下的txt里的x个连续空白文本行替换成y个空白行(用wps或word的话,如果txt很大(超过4m),程序就会卡死T-T)

这里假定x=3,y=2

【处理前】

我是谁



我是谁

我是谁

【处理后】

我是谁


我是谁

我是谁

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

返回列表