标题: [文本处理] 【已解决】如何在多文本中,删除某个指定字符前后的换行符? [打印本页]
作者: 屡败屡战 时间: 2018-3-24 09:12 标题: 【已解决】如何在多文本中,删除某个指定字符前后的换行符?
本帖最后由 屡败屡战 于 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
我要处理的是大量的文本文件(而不是单个文本),指定字符是“¥”,望大神们给些启示!!
作者: yhcfsr 时间: 2018-3-24 14:32
本帖最后由 yhcfsr 于 2018-3-24 14:35 编辑
问一:- @echo off&setlocal enabledelayedexpansion
- set "ScFile=D:\test\test.txt"
- set/a flag=1
- (for /f "delims=" %%a in ('type "%ScFile%"') do (
- echo %%a|findstr /r "¥">nul&&set/a flag=1||(if !flag! equ 0 ( echo. ) else ( set/a flag=0 ))
- set/p=%%a<nul
- ))>out.txt
- pause&exit
复制代码
问二:- @echo off&setlocal enabledelayedexpansion
- set "ScFile=D:\test\test.txt"
- set/a flag=1
- (for /f "delims=" %%a in ('type "%ScFile%"') do (
- set/p=%%a<nul
- echo %%a|findstr /r "¥">nul|| echo.
- ))>out.txt
- pause&exit
复制代码
申明一点:bat处理文本,对特殊英文字符很敏感。如果文本中出现特殊英文字符,文本会失真。
作者: 屡败屡战 时间: 2018-3-24 14:42
老师好:
我求的是:处理的是大量的文本文件(而不是单个文本),指定字符是“¥”。
作者: yhcfsr 时间: 2018-3-24 22:15
回复 3# 屡败屡战
一个都能搞定,批量不是一个FOR语句的事情吗?
不能老是拿来主义吧?好歹上等兵了,这么简单的事情自己学着做
作者: 屡败屡战 时间: 2018-3-24 22:34
老师好:
我现在充其量只会改改代码中的数字,大部分是理解不了,望老师提供些批处理学习的网址
作者: yhcfsr 时间: 2018-3-25 08:24
本帖最后由 yhcfsr 于 2018-3-25 08:28 编辑
回复 5# 屡败屡战
学习BAT有比这更好的地方吗?论坛那个教程版块的帖子看了吗?那几篇置顶帖子看熟了先。
反正我就是在这学的,一两天就会了,多研究大神们的代码。
论坛有QQ群,里面很多热心人教你。
看我注册时间,基本就是注册时开始学的。
作者: 屡败屡战 时间: 2018-3-25 10:07
请写个加入For循环的代码,这样方便我可以前后代码对照的研究下,便于照猫画虎。
作者: WHY 时间: 2018-3-26 18:02
本帖最后由 WHY 于 2018-3-26 22:15 编辑
一- @if(0)==(0) echo off
- dir /b *.txt | cscript //nologo //e:jscript "%~f0"
- pause & exit
- @end
-
- var fso = new ActiveXObject('Scripting.FileSystemObject');
-
- while(!WSH.StdIn.AtEndOfStream){
- var strFile = WSH.StdIn.ReadLine();
- var objFile = fso.OpenTextFile(strFile, 1);
- var s = objFile.ReadAll();
- s = s.replace(/[\r\n]+(¥)/g, '$1').replace(/(¥)[\r\n]+/g, '$1');
- objFile.Close();
- fso.OpenTextFile(strFile + '.LOG', 2, true).Write(s);
- }
复制代码
二
第12行- s = s..replace(/(¥)[\r\n]+/g, '$1');
复制代码
三
第12行- s = s.replace(/[\r\n]+(¥)/g, '$1');
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |