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

[文本处理] BAT怎么有选择性的替换掉一个txt文本文件行末的回车换行符?

有一个txt的文本文件,里面的内容如下:

  1、中国**党党员是______中的有**主义觉悟的先锋战士。(B)
  A、农民阶级   B、中国工人阶级    C、知识分子
  2、“**”重要思想,是我们党的______。(C)
  A、立国之本、执政之基、力量之源    B、立党之本、强国之基、力量之源  
  C、立党之本、执政之基、力量之源
  3、中国**党以_______作为自己的行为指南。(C)
  A、马克思列宁主义、**思想
  B、**建设有中国特色社会主义理论
  C、马克思列宁主义、**思想、**理论和”**”重要思想

现在要把题目和答案合成一行,如下所示

  1、中国**党党员是______中的有**主义觉悟的先锋战士。(B)A、农民阶级   B、中国工人阶级    C、知识分子
  2、“**”重要思想,是我们党的______。(C)A、立国之本、执政之基、力量之源    B、立党之本、强国之基、力量之源  C、立党之本、执政之基、力量之源
  3、中国**党以_______作为自己的行为指南。(C)A、马克思列宁主义、**思想B、**建设有中国特色社会主义理论C、马克思列宁主义、**思想、**理论和”**”重要思想

请问怎么用批处理来做成这个效果呢?

本帖最后由 jzp820927 于 2013-10-17 22:26 编辑

前面确实有2个全角空格,因为这个txt文件是用word文件另存的,好像word文件是排版了的,段首缩进2个字符,但是这2个空格应该对处理这个文本文件影响不大吧?

还想问个问题,就怎么把

  1、中国**党党员是______中的有**主义觉悟的先锋战士。(B)A、农民阶级   B、中国工人阶级    C、知识分子
  2、“**”重要思想,是我们党的______。(C)A、立国之本、执政之基、力量之源    B、立党之本、强国之基、力量之源  C、立党之本、执政之基、力量之源
  3、中国**党以_______作为自己的行为指南。(C)A、马克思列宁主义、**思想B、**建设有中国特色社会主义理论C、马克思列宁主义、**思想、**理论和”**”重要思想

这个结果里面的每个题里面的()中的字母提取出来,放在题目最后,用逗号分割,而且把题名里面的括号里面的字母去掉,结果像下面这样:

  1、中国**党党员是______中的有**主义觉悟的先锋战士。()A、农民阶级   B、中国工人阶级    C、知识分子,B
  2、“**”重要思想,是我们党的______。()A、立国之本、执政之基、力量之源    B、立党之本、强国之基、力量之源  C、立党之本、执政之基、力量之源,C
  3、中国**党以_______作为自己的行为指南。()A、马克思列宁主义、**思想B、**建设有中国特色社会主义理论C、马克思列宁主义、**思想、**理论和”**”重要思想,C

TOP

本帖最后由 apang 于 2013-10-18 00:09 编辑

保存为test.vbs,试试
每行开头是不是有全角空格?
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. text = fso.OpenTextFile("a.txt").ReadAll
  3. Set re = New RegExp
  4. re.Pattern = "([ \s]*\d+、.*?)(([a-z]))\r\n(([ \s]*[a-z]、.*(?:$|\r\n))+)"
  5. re.Global = True
  6. re.IgnoreCase = True
  7. For Each a In re.Execute(text)
  8.     str = Replace(Replace(a.SubMatches(2),vbCrLf," ")," ","")
  9.     str = a.SubMatches(0) & "()" & str & "," & a.SubMatches(1)
  10.     fso.OpenTextFile("b.txt",8,True).WriteLine str
  11. Next
  12. MsgBox "OK"
复制代码

TOP

来个纯P的.
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=123456789
  3. for /f "tokens=* delims= " %%i in (a.txt) do (
  4. set str=%%i&set str=!str:~0,1!&call set st=%%n:!str!=%%
  5. if not !st! equ !n! (set/a s+=1&set str!s!=%%i)
  6. if !st! equ !n! (call set str!s!=%%str!s!%%   %%i)
  7. )
  8. for /l %%i in (1,1,!s!) do (echo,!str%%i!>>b.txt)
  9. pause
复制代码

TOP

非常感谢,我测试看看效果

TOP

本帖最后由 tmplinshi 于 2013-10-17 20:22 编辑
  1. fr "abc.txt" -r:"[\r\n]+\s*([A-Z]、)" -t:"\1"
复制代码
fr 下载地址: http://baiy.cn/utils/fr/index.htm

测试前请备份文件。

TOP

返回列表