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

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

[复制链接]
发表于 2018-3-24 09:12:18 | 显示全部楼层 |阅读模式
本帖最后由 屡败屡战 于 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


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

评分

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

查看全部评分

发表于 2018-3-24 14:32:54 | 显示全部楼层
本帖最后由 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处理文本,对特殊英文字符很敏感。如果文本中出现特殊英文字符,文本会失真。
 楼主| 发表于 2018-3-24 14:42:14 | 显示全部楼层
老师好:
我求的是:处理的是大量的文本文件(而不是单个文本),指定字符是“¥”。
发表于 2018-3-24 22:15:41 | 显示全部楼层
回复 3# 屡败屡战


    一个都能搞定,批量不是一个FOR语句的事情吗?
不能老是拿来主义吧?好歹上等兵了,这么简单的事情自己学着做
 楼主| 发表于 2018-3-24 22:34:34 | 显示全部楼层
老师好:
  我现在充其量只会改改代码中的数字,大部分是理解不了,望老师提供些批处理学习的网址
发表于 2018-3-25 08:24:43 | 显示全部楼层
本帖最后由 yhcfsr 于 2018-3-25 08:28 编辑

回复 5# 屡败屡战


    学习BAT有比这更好的地方吗?论坛那个教程版块的帖子看了吗?那几篇置顶帖子看熟了先。
反正我就是在这学的,一两天就会了,多研究大神们的代码。
论坛有QQ群,里面很多热心人教你。
看我注册时间,基本就是注册时开始学的。
 楼主| 发表于 2018-3-25 10:07:23 | 显示全部楼层
请写个加入For循环的代码,这样方便我可以前后代码对照的研究下,便于照猫画虎。
发表于 2018-3-26 18:02:45 | 显示全部楼层
本帖最后由 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技术 +2 收起 理由
smss + 1 谢谢
屡败屡战 + 1 代码完美,执行后的效果超出了我的预期。谢 ...

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 06:04 , Processed in 0.020334 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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