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

[文本处理] 【已解决】如何在多文本中,删除某个指定字符前后的换行符?

本帖最后由 屡败屡战 于 2018-3-27 09:28 编辑

我有问题求助,在大量的文本中,插入某个特殊字符“¥”,我想要的效果是:如何在指定字符串(例如“¥”)的“之前”与“之后”均删除换行符,使指定字符“¥”相邻的上、下行,合并成一行?

第一个问题:

举例:
某某文本文件(其内容是)

444444
777777
555555

888888
3333333
77778955

我想要的效果:

444444
777777
555555¥888888
3333333
77778955


第二个问题:

我想要的效果是:在大量的文本中,如何在指定字符(例如“¥”)之后删除换行符,使指定字符“¥”所在的上、下行,合并成一行?
举例:
某某文本文件(其内容是)

444444
777777
555555¥
888888
3333333
77778955

我想要的效果:

444444
777777
555555¥888888
3333333
77778955


第三个问题:

我想要的效果是:在大量的文本中,如何在指定字符(例如“¥”)之前删除换行符,使指定字符“¥”所在的上、下行,合并成一行?
举例:
某某文本文件(其内容是)

444444
777777
555555
¥888888
3333333
77778955

我想要的效果:

444444
777777
555555¥888888
3333333
77778955


我要处理的是大量的文本文件(而不是单个文本),指定字符是“¥”,望大神们给些启示!!
1

评分人数

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

本帖最后由 yhcfsr 于 2018-3-24 14:35 编辑

问一:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "ScFile=D:\test\test.txt"
  3. set/a flag=1
  4. (for /f  "delims=" %%a in ('type "%ScFile%"') do (
  5. echo %%a|findstr /r "¥">nul&&set/a flag=1||(if !flag! equ 0 ( echo. ) else ( set/a flag=0 ))
  6. set/p=%%a<nul
  7. ))>out.txt
  8. pause&exit
复制代码
问二:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "ScFile=D:\test\test.txt"
  3. set/a flag=1
  4. (for /f  "delims=" %%a in ('type "%ScFile%"') do (
  5. set/p=%%a<nul
  6. echo %%a|findstr /r "¥">nul|| echo.
  7. ))>out.txt
  8. pause&exit
复制代码
申明一点:bat处理文本,对特殊英文字符很敏感。如果文本中出现特殊英文字符,文本会失真。

TOP

老师好:
我求的是:处理的是大量的文本文件(而不是单个文本),指定字符是“¥”。

TOP

回复 3# 屡败屡战


    一个都能搞定,批量不是一个FOR语句的事情吗?
不能老是拿来主义吧?好歹上等兵了,这么简单的事情自己学着做

TOP

老师好:
  我现在充其量只会改改代码中的数字,大部分是理解不了,望老师提供些批处理学习的网址

TOP

本帖最后由 yhcfsr 于 2018-3-25 08:28 编辑

回复 5# 屡败屡战


    学习BAT有比这更好的地方吗?论坛那个教程版块的帖子看了吗?那几篇置顶帖子看熟了先。
反正我就是在这学的,一两天就会了,多研究大神们的代码。
论坛有QQ群,里面很多热心人教你。
看我注册时间,基本就是注册时开始学的。

TOP

请写个加入For循环的代码,这样方便我可以前后代码对照的研究下,便于照猫画虎。

TOP

本帖最后由 WHY 于 2018-3-26 22:15 编辑

  1. @if(0)==(0) echo off
  2. dir /b *.txt | cscript //nologo //e:jscript "%~f0"
  3. pause & exit
  4. @end
  5. var fso = new ActiveXObject('Scripting.FileSystemObject');
  6. while(!WSH.StdIn.AtEndOfStream){
  7.     var strFile = WSH.StdIn.ReadLine();
  8.     var objFile = fso.OpenTextFile(strFile, 1);
  9.     var s = objFile.ReadAll();
  10.     s = s.replace(/[\r\n]+(¥)/g, '$1').replace(/(¥)[\r\n]+/g, '$1');
  11.     objFile.Close();
  12.     fso.OpenTextFile(strFile + '.LOG', 2, true).Write(s);
  13. }
复制代码

第12行
  1. s = s..replace(/(¥)[\r\n]+/g, '$1');
复制代码

第12行
  1. s = s.replace(/[\r\n]+(¥)/g, '$1');
复制代码
2

评分人数

    • smss: 谢谢技术 + 1
    • 屡败屡战: 代码完美,执行后的效果超出了我的预期。谢 ...技术 + 1

TOP

返回列表