无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3453|回复: 16
打印 上一主题 下一主题

[求助] 请大佬出手,帮忙写一个给txt增加空白行的bat脚本

[复制链接]
跳转到指定楼层
1#
发表于 2023-9-23 09:23:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
RT,这个bat脚本的作用是

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

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

举例:

【原版】

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

【修改版】

我是谁啊啊啊



第 1 章 奥特曼



谁说的啊啊啊
2#
发表于 2023-9-23 09:28:34 | 只看该作者
这里大佬多!《批处理之家》
http://bbs.bathome.net/index.php
回复

使用道具 举报

3#
发表于 2023-9-23 10:15:17 | 只看该作者
@echo off
sed -e "/第 1 章 奥特曼/i\\n\n" -e "/第 1 章 奥特曼/a\\n\n" -i 1.txt
echo 已在“第 1 章 奥特曼”前后添加三个空行。
pause 1>nul 2>nul

试试这个。

文本前后添加空行.rar

114.26 KB, 下载次数: 7, 下载积分: 无忧币 -2

回复

使用道具 举报

4#
发表于 2023-9-23 11:30:41 来自手机 | 只看该作者
notepad2有删除空行,貌似没有增加空行?确实没用过这种需求,不知道有没有。
回复

使用道具 举报

5#
发表于 2023-9-23 11:52:29 | 只看该作者
liuzhaoyzz 发表于 2023-9-23 10:15
@echo off
sed -e "/第 1 章 奥特曼/i\\n\n" -e "/第 1 章 奥特曼/a\\n\n" -i 1.txt
echo 已在“第 1 章  ...

sed可以处理UTF8文本吗?
回复

使用道具 举报

6#
发表于 2023-9-23 12:37:23 来自手机 | 只看该作者
batche 发表于 2023-9-23 11:52
sed可以处理UTF8文本吗?

好像不行,我写过几个批处理,比如pe/linux安装器之类的,我用c改了个程序,先把文本转换为ansi编码,sed改过之后再转换为utf8。
回复

使用道具 举报

7#
发表于 2023-9-23 12:42:44 来自手机 | 只看该作者
看个小说还要修改整理,是不是过于认真了点儿?

很多小说阅读器都有类似功能,无需修改源文件,比如开源小说阅读器https://github.com/gedoor/legado
回复

使用道具 举报

8#
发表于 2023-9-23 23:52:08 来自手机 | 只看该作者
窄口牛 发表于 2023-9-23 11:30
notepad2有删除空行,貌似没有增加空行?确实没用过这种需求,不知道有没有。

可以用正则表达替换来添加换行啊
回复

使用道具 举报

9#
发表于 2023-9-23 23:54:03 来自手机 | 只看该作者
nttwqz 发表于 2023-9-23 12:42
看个小说还要修改整理,是不是过于认真了点儿?

很多小说阅读器都有类似功能,无需修改源文件,比如开源 ...

也许他只是拿小说来举例而已呢
回复

使用道具 举报

10#
发表于 2023-9-24 12:29:11 来自手机 | 只看该作者
ppll2030 发表于 2023-9-23 23:54
也许他只是拿小说来举例而已呢

小说阅读器被不只是能用来看小说……
回复

使用道具 举报

11#
发表于 2023-9-24 22:13:39 来自手机 | 只看该作者
wsl中的sed不如linux中的sed强大
回复

使用道具 举报

12#
发表于 2023-9-26 08:51:30 | 只看该作者
什么
回复

使用道具 举报

13#
发表于 2023-9-26 09:01:06 | 只看该作者

我的办法,比较笨,但也可以实现

把txt文本,导入到 excel ,再利用 方方格子 的插入 N 行功能,来实现,很容易。

插入空格后,再复制黏贴到 记事本,即可
回复

使用道具 举报

14#
发表于 2023-9-30 19:50:42 | 只看该作者
进来学习一下,谢谢大佬
回复

使用道具 举报

15#
发表于 2023-9-30 20:47:56 | 只看该作者
本帖最后由 dos时代菜鸟 于 2023-10-1 09:45 编辑


思路如下:

  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. rem 变量初始化
  4.     set file0=0.txt
  5.     set file1=1.txt
  6.     rem 定义 "第xxx章" 中的 xxx 内容,包括 "空格 tab 0~9 一~万" 用逗号间隔
  7.     set "ltrs= ,    ,0,1,2,3,4,5,6,7,8,9,一,二,三,四,五,六,七,八,九,十,百,千,万"
  8.     if exist !file1! del /q !file1!

  9. rem 逐行处理文件
  10. for /f "delims=" %%c in (!file0!) do (
  11.     set "str1=%%c!ltrs!"
  12.     rem 把当前行内容中的 特定字符去掉
  13.     for /f "tokens=1,2* delims=," %%x in ("!ltrs!") do (
  14.         set str1=!str1:%%x=!
  15.         set str1=!str1:%%y=!
  16.         for %%i in (%%z) do (set str1=!str1:%%i=! )
  17.     )
  18.     rem 把当前行信息传递给另一个文件
  19.     rem 如果当前行在去掉特定字符后前两个字是 “第章” 就把该行前后各加三个空行。
  20.     (
  21.         if "!str1:~0,2!"=="第章" (
  22.             echo.
  23.             echo.
  24.             echo.
  25.             echo %%c
  26.             echo.
  27.             echo.
  28.             echo.
  29.         ) else (
  30.             echo %%c
  31.         )
  32.     )>>!file1!
  33. )
  34. echo.
  35. echo !file0! ===^>!file1!
  36. echo ===============================
  37. type !file1!
  38. echo ===============================

  39. echo.
  40. pause
复制代码
0_2_1.7z (803 Bytes, 下载次数: 4)



回复

使用道具 举报

16#
发表于 2023-9-30 22:14:10 | 只看该作者
进来学习一下,谢谢大佬
回复

使用道具 举报

17#
发表于 2023-10-1 09:46:19 | 只看该作者
批处理 无非就是 for + if + set
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-26 12:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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