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

[文本处理] 【已解决】批处理如何批量以特定字符为界,将原一行分成两行?

本帖最后由 pan528 于 2014-7-24 22:58 编辑

一、材料
有以下格式文本若干个:

处理前文本:
【法规标题】全国人大常委会关于《中华人民共和国刑事诉讼法》第二百七十一条第二款的解释
【发布部门】全国人大常委会 【发文字号】
【发布日期】2014.04.24 【实施日期】2014.04.24
【时效性】现行有效 【效力级别】法律解释
【法规类别】刑诉综合规定与解释
全国人民代表大会常务委员会关于《中华人民共和国刑事诉讼法》第二百七十一条第二款的解释
(2014年4月24日第十二届全国人民代表大会常务委员会第八次会议通过)
全国人民代表大会常务委员会根据**实践中遇到的情况,讨论了刑事诉讼法第二百七十一条第二款的含义及被害人对附条件不起诉的案件能否依照第一百七十六条的规定向人民法院起诉的问题,解释如下:
人民**办理未成年人刑事案件,在作出附条件不起诉的决定以及考验期满作出不起诉的决定以前,应当听取被害人的意见。被害人对人民**对未成年犯罪嫌疑人作出的附条件不起诉的决定和不起诉的决定,可以向上一级人民**申诉,不适用刑事诉讼法第一百七十六条关于被害人可以向人民法院起诉的规定。
现予公告。

处理后文本:
【法规标题】全国人大常委会关于《中华人民共和国刑事诉讼法》第二百七十一条第二款的解释
【发布部门】全国人大常委会
【发文字号】
【发布日期】2014.04.24
【实施日期】2014.04.24
【时效性】现行有效
【效力级别】法律解释
【法规类别】刑诉综合规定与解释
全国人民代表大会常务委员会关于《中华人民共和国刑事诉讼法》第二百七十一条第二款的解释
(2014年4月24日第十二届全国人民代表大会常务委员会第八次会议通过)
全国人民代表大会常务委员会根据**实践中遇到的情况,讨论了刑事诉讼法第二百七十一条第二款的含义及被害人对附条件不起诉的案件能否依照第一百七十六条的规定向人民法院起诉的问题,解释如下:
人民**办理未成年人刑事案件,在作出附条件不起诉的决定以及考验期满作出不起诉的决定以前,应当听取被害人的意见。被害人对人民**对未成年犯罪嫌疑人作出的附条件不起诉的决定和不起诉的决定,可以向上一级人民**申诉,不适用刑事诉讼法第一百七十六条关于被害人可以向人民法院起诉的规定。
现予公告。

二、要求
批量以第二个特定字符“【”为界,将原一行分成两行。其余的文本行内容不变。
1

评分人数

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

本帖最后由 apang 于 2014-7-24 18:32 编辑
  1. @set @n=0;/* & echo off
  2. dir /b *.txt | cscript -nologo -e:jscript "%~0"
  3. pause & exit/b & rem */
  4. fso = new ActiveXObject("Scripting.FileSystemObject");
  5. while (!WScript.StdIn.AtEndOfStream) {
  6.     file = WScript.StdIn.ReadLine();
  7.     f = fso.OpenTextFile(file, 1);
  8.     txt = f.ReadAll().replace(/(.)(【.+?)/g, "$1\r\n$2");
  9.     f.Close(); f = null
  10.     fso.CreateTextFile(file, true).Write(txt);
  11. }
复制代码
1

评分人数

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. set LF=^
  3. for /f %%y in ('copy /z %0 nul') do for %%z in ("%%y!LF!") do (
  4.    endlocal
  5.    for %%a in (*.txt) do (
  6.       for /f "delims=" %%a in (%%~sa) do (
  7.          set str=%%a
  8.          setlocal enabledelayedexpansion
  9.          set str=!str:【=%%~z【!
  10.          if !str:~^,2!==%%~z set str=!str:~2!
  11.          echo !str!
  12.          endlocal
  13.       )
  14.    )>"%%~na_处理.txt"
  15. )
  16. pause
复制代码

TOP

  1. sed -i "s/【/\r\n\0/2" *.txt
复制代码

TOP

回复 2# apang


    . 在 win 下等同于 [^\r\n],而 \r 一般不会在文本里单独出现,所以 [^\n] 可以简化成 .
1

评分人数

TOP

回复 2# apang


感谢回帖!通过了测试。

TOP

回复 3# CrLf


感谢回帖!通过了测试。

你的批处理水平太高了,能推荐一下提高批处理水平的教程吗?

再次表示感谢!

TOP

本帖最后由 CrLf 于 2014-7-25 01:12 编辑

回复 7# pan528


批处理其实没什么内容,写多了自然会养成惯用思路,能解决大部分常见问题,看多了就会知道大多数怪异技巧,能搞定一些特殊情况,然后貌似差不多到头了...
虽然简单,不过很好玩,shell 特有的“暴力”属性是大多数优雅的脚本语言所不具备的~
学习资料见:http://bbs.bathome.net/forum-33-1.html,该有的差不多都有了
至于练手,在求助版解决几个问题很快就熟练了...

TOP

回复 8# CrLf


非常感谢!没有到批处理之家前,总在黑暗中摸索,现在有这个多高手老师指点,开始有一点进步了。谢谢指点。

TOP

在Word里面,替换【 成 【^p

TOP

返回列表