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

[文本处理] 新手求助批处理怎样修改小说章节?

[复制链接]
发表于 2017-7-25 10:13:49 | 显示全部楼层 |阅读模式
一本1000多章小说,他每一章的标题是1 xxx,2 xxx,这样掌阅之类的软件分章是乱的,不能很好的识别,怎么能改成第一章 xxx,第二章 xxx,或者第1章 xxx,第2章 xxx?
发表于 2017-7-25 12:02:16 | 显示全部楼层
本帖最后由 happy886rr 于 2017-7-25 12:43 编辑

用法:存为bat跟test.txt放一起。
JS混编

  1. 1>1/* :
  2. @echo off&cls&cscript -nologo -e:jscript "%~f0" test.txt&pause&exit
  3.     */

  4. var fso=new ActiveXObject('Scripting.FileSystemObject'), fp=fso.OpenTextFile(WScript.Arguments(0), 1);
  5. while(! fp.AtEndOfStream)
  6. {
  7.         WScript.echo((fp.ReadLine()).replace(/(\d+)(\s.*)/, '第$1章$2'));
  8. }
复制代码
.
.
Csharp

  1. /*************************************************************************
  2. @ECHO OFF&CLS&TITLE MINI CSHARP COMPILER BY HAPPY
  3. for /f "delims=" %%a in ('dir /a-d /b /s "%systemroot%\Microsoft.NET\Framework\csc.exe"') do (
  4.                 "%%~a" /out:a.exe "%~f0" && a.exe
  5.                 pause&exit/b
  6.         )
  7. )
  8. set/p=You needs Microsoft.NET!&exit/b
  9. **************************************************************************/
  10. using System;
  11. using System.IO;
  12. using System.Text;
  13. using System.Text.RegularExpressions;

  14. namespace FileIOApplication
  15. {
  16.         class Program
  17.         {
  18.                 static void Main(string[] args)
  19.                 {
  20.                         FileStream inFp  = new FileStream("test.txt", FileMode.Open, FileAccess.Read);
  21.                         FileStream outFp = new FileStream("test2.txt", FileMode.Create, FileAccess.Write);

  22.                         byte[] inFpBinary = new byte[inFp.Length];
  23.                         inFp.Read(inFpBinary, 0, (int)inFp.Length);       
  24.                         inFp.Close();

  25.                         string inTextString  = System.Text.Encoding.UTF8.GetString(inFpBinary);
  26.                         string outTextString = Regex.Replace(inTextString, @"(\d+)(\s.*)", @"第$1章$2");

  27.                         byte[] outFpBinary = System.Text.Encoding.Default.GetBytes(outTextString);
  28.                         outFp.Write(outFpBinary, 0, (int)outFpBinary.Length);
  29.                         outFp.Close();
  30.                 }
  31.         }
  32. }
复制代码

评分

参与人数 2技术 +2 收起 理由
老刘1号 + 1 乐于助人
523066680 + 1 C#**好

查看全部评分

发表于 2017-7-25 12:32:34 | 显示全部楼层
C#DAFA 好
 楼主| 发表于 2017-7-25 13:01:15 | 显示全部楼层
回复 2# happy886rr


    用第一段代码的话只有最后200多章的内容,而用第二段代码的话生成的文件除了“第x章”之外就全是乱码了。。。。
 楼主| 发表于 2017-7-25 13:07:52 | 显示全部楼层
回复 2# happy886rr


    好了,我改了下文件编码就没问题了,谢谢大神啊
发表于 2017-7-25 13:42:31 | 显示全部楼层
回复 5# nobody037
你应该对批处理有点基础才行。不能再问为啥只显示最后几章了,echo就是一直显示,直到文件结束,你加个文件输出 >out.txt就能解决。
发表于 2017-7-25 13:56:50 | 显示全部楼层
最有效的TXT分章工具txtSplit v6,100%按照第x章分割,
连正文中出现第x章也会被分割,所以略有缺陷。
搜索:txt切割器 小说章节分割 V6.0
必须改成ANSI编码,否则其他会乱码。

TXT杀手最终标题版,能100%按照第x章xxx分割,
缺陷:正文行太长或标题行太长、特殊字符就会错误,可以备用。

easypub,正则表达式提取章节名称分割,txt直接生成小说,
如果电脑听书还是缺少相关100%有效工具,因为标题后面如果是正文需要先添加个换行,
特殊字符及一些标点需要先替换成大写的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 20:02 , Processed in 0.021536 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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