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

[文本处理] [已解决]批处理如何批量添加标点符号?

[复制链接]
发表于 2012-9-21 03:16:01 | 显示全部楼层 |阅读模式
感谢楼下几位高手的帮助!

有些小说的段落缺少标点符号,请问要怎样批量添加句号。

要求:1、章节所在行不要添加标点符号。如 第一章 出世 (后面本来就是没有标点符号的)
         2、行尾有标点符号的不要添加句号如。……!?——”这6种符号。

下面的批处理可以做到一部分,还是不够完美,省略号、章节所在行后面还是有句号。
  1. setlocal EnableDelayedExpansion
  2. FOR /F "delims=" %%t IN (text.txt) DO (
  3. set a=%%t
  4. set b=!a:~-1!
  5. call :AAA
  6. )
  7. start "" ok.txt
  8. exit

  9. :AAA
  10. if not "%b%"=="”" (if not "%b%"=="。" (if not "%b%"=="!" (if not "%b%"=="?" echo %a%。>>ok.txt & goto :EOF)))
  11. echo %a%>>ok.txt
  12. goto :EOF
复制代码

评分

参与人数 1PB +2 收起 理由
batman + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-9-21 03:45:57 | 显示全部楼层
  1. sed "/^.\{,10\}[第]*[^,。]\{1,20\}[章节]\{,40\}$/!s/[^…!?—”]$/&。/g" test.txt>ok.txt
复制代码
 楼主| 发表于 2012-9-21 10:07:06 | 显示全部楼层
回复 2# 全天占线

好像不行,&。是表示添加句号的吗?没反应啊……
  1.   第一章 反复
  2. 反反复复反反复复反反复复反反复复反反复复。
  3. 反反复复反反复复?
  4. 反反复复反反复复反反复复!
  5. 反反复复反反复复反反复复反反复复反反复复……
  6. 反反复复反反复复——
  7. 反反复复反反复复反反复复反反复复”
  8. 反反复复反反复复反反复复反反复复
  9. 反反复复反反复复反反复复反反复复
  10. 反反复复反反复复反反复复反反复复
  11. 反反复复反反复复反反复复反反复复
  12. 反反复复反反复复反反复复反反复复反反复复反反复复
  13. 反反复复反反复复反反复复反反复复反反复复反反复复
  14. 反反复复反反复复反反复复
  15. 反反复复反反复复反反复复
  16. 反反复复反反复复反反复复反反复复
  17. 反反复复反反复复反反复复
复制代码
发表于 2012-9-21 10:47:39 | 显示全部楼层
回复 3# 每天几分


    你用的sed.exe是什么版本?
 楼主| 发表于 2012-9-21 12:15:30 | 显示全部楼层
回复 4# forfiles

俺没有sed.exe啊,俺的是windows。太复杂的命令不懂……发个帖俺还要用计算器计一下……
发表于 2012-9-21 12:37:25 | 显示全部楼层
本帖最后由 apang 于 2012-9-22 08:39 编辑

只是练习。。。
  1. Set FSO = CreateObject("Scripting.FileSystemObject")
  2. Set File = FSO.OpenTextFile("1.txt",1)
  3. Do Until File.AtEndOfStream
  4.    strLine = File.ReadLine
  5.    Set Re = New RegExp
  6.    Re.Pattern = "[。…!?—”]$|第.*章"
  7.    Re.Global = True
  8.    If Not Re.Test(strLine) Then strLine = strLine & "。"
  9.    strOut = strOut & strLine & vbCrLf
  10. Loop
  11. FSO.CreateTextFile("2.txt",True).Write strOut
  12. Msgbox "OK"
复制代码
 楼主| 发表于 2012-9-21 13:19:01 | 显示全部楼层
回复 6# apang


    你们个个都是高手……有没有用记事本写的,简单明了即可……

只要告诉我怎么将第*章行后面的句号过滤掉就行了。
  1.     setlocal EnableDelayedExpansion
  2.     FOR /F "delims=" %%t IN (test.txt) DO (
  3.     set a=%%t
  4.     set b=!a:~-1!
  5.     call :AAA
  6.     )
  7.     start "" ok.txt
  8.     exit

  9.     :AAA
  10.     if not "%b%"=="”" (if not "%b%"=="。" (if not "%b%"=="!" (if not "%b%"=="?" (if not "%b%"=="…" (if not "%b%"=="

  11. —" (if not "%b%"==")" echo %a%。>>ok.txt & goto :EOF))))))
  12.     echo %a%>>ok.txt
  13.     goto :EOF
复制代码
章后面的句号俺不懂怎么解决啊,是不是要加一个if not "%b%"=="第.*?章.*?\r\n"此类的。。。。

  1.       第一章 反复。
  2.     反反复复反反复复反反复复反反复复反反复复。
  3.     反反复复反反复复?
  4.     反反复复反反复复反反复复!
  5.     反反复复反反复复反反复复反反复复反反复复……
  6.     反反复复反反复复——
  7.     反反复复反反复复反反复复反反复复”
  8.     反反复复反反复复反反复复反反复复。
  9.     反反复复反反复复反反复复反反复复。
  10.     反反复复反反复复反反复复反反复复。
  11.     反反复复反反复复反反复复反反复复。
  12.     反反复复反反复复反反复复反反复复反反复复反反复复。
  13.     反反复复反反复复反反复复反反复复反反复复反反复复。
  14.     反反复复反反复复反反复复。
  15.     反反复复反反复复反反复复。
  16.     反反复复反反复复反反复复反反复复。
  17.     反反复复反反复复反反复复。
复制代码
发表于 2012-9-21 13:50:12 | 显示全部楼层
回复 7# 每天几分


    6#代码保存为vbs文件,如test.vbs,与源文件(1.txt)放在一起。双击test.vbs,看看生成的2.txt
发表于 2012-9-21 21:55:24 | 显示全部楼层
回复 5# 每天几分


下载一个就有了
http://www.bathome.net/thread-1114-1-1.html
发表于 2012-9-22 09:00:48 | 显示全部楼层
6#搞错了,不是"第?章",貌似应该为"第.*章"
太菜了,vbs头疼中。。。
发表于 2012-9-28 00:10:02 | 显示全部楼层
批能很好地解决啊。。。

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (a.txt) do (
  3.   set "flag=。"
  4.   set "str=%%a"&set "str=!str: =!"&set "str=!str: =!"
  5.   if "!str:~,1!" equ "第" if "!str:章=!" neq "!str!" set "flag="
  6.   for %%b in (。 ” ? ! …… ——) do (
  7.     if "!str:~-1!" equ "%%b" set "flag="
  8.     if "!str:~-2!" equ "%%b" set "flag="
  9.   )
  10.   echo,%%a!flag!
  11. ))>$
  12. move $ a.txt
  13. start a.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 15:32 , Processed in 0.020429 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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