标题: [文本处理] BAT如何处理txt文件每隔两行空一行? [打印本页]
作者: elvis1988 时间: 2013-1-17 03:15 标题: BAT如何处理txt文件每隔两行空一行?
各位大大,大家好!最近在忙着整理一些外语学习资料,然后准备用作字典学习,做成babylon的格式。里面就牵涉到一点,如何将合并在一块的文字分开,要求是,每隔两行空一行,如。
原来:
accident
n.意外遭遇,事故;意外(因素)
across
prep.横过,越过;在的对面 ad.横过,穿过
active
adj.活跃的,敏捷的,积极的;在活动中的
advertise
vt.公告,公布;为...做广告 vi.登广告
after
prep.在...以后;在...后面 adv.以后,后来
经过处理:
accident
n.意外遭遇,事故;意外(因素)
across
prep.横过,越过;在的对面 ad.横过,穿过
active
adj.活跃的,敏捷的,积极的;在活动中的
advertise
vt.公告,公布;为...做广告 vi.登广告
after
prep.在...以后;在...后面 adv.以后,后来。
本人使用了网上一位大大的代码,只不过这个代码好像有一个bug,对于一般长度的词条可以很好处理,就是对于词条特别特别长的解释,这代码就直接删去了这行,导致了无法高质量地完成字典制作的过程。我把代码贴出,也希望各位大大看一下,如何才能处理特别特别长的词条。- @echo off&setlocal enabledelayedexpansion
- set/p file=拖入文件并回车:
- set/p count=输入每隔多少行插入:
- set/p blank=输入插入多少行:
- set n=&set m=
- (for /f "usebackq delims=" %%a in ("%file%") do (
- echo,%%a
- set/a n+=1,m=n%%count
- if !m! equ 0 for /l %%b in (1 1 %blank%) do echo,
- ))>new.txt
复制代码
谢谢各位的解答了,小弟不胜感激!
作者: BAT-VBS 时间: 2013-1-17 09:36
请把那个代码无法处理的超长词条贴出来看看
作者: ccdevil 时间: 2013-1-17 09:39
特别长的解释是否可能出现三行的情况
作者: namejm 时间: 2013-1-17 09:40
如果仅用批处理而不借助第三方命令行工具的话
至少会遇到两个问题:
1.无法处理超长行(貌似不能超过8192个字符?)
2.特殊字符难以准确输出,例如<、>之类的
最好配合其他命令行工具
推荐使用Windows下的gsed.exe
演示代码:- @echo off
- set/p file=拖入文件并回车:
- set/p count=输入每隔多少行插入:
- set/p blank=输入插入多少行:
-
- for /l %%i in (2,1,%count%) do call set lines=N;%%lines%%
- for /l %%i in (1,1,%blank%) do call set blanklines=G;%%blanklines%%
-
- sed -n "{%lines% %blanklines% p}" a.txt>b.txt
- start b.txt
复制代码
待处理的文本文件为 a.txt ,结果保存为 b.txt
sed.exe 按照这个帖子的提示进行下载,与*.cmd文件保存在同一目录下使用
http://www.bathome.net/thread-16975-1-1.html
作者: batman 时间: 2013-1-17 10:45
本帖最后由 batman 于 2013-1-17 10:51 编辑
这种事还是让vbs来做:- Dim objFSO, ReadStr
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- ReadStr = objFSO.OpenTextFile("a.txt").ReadAll()
- Dim Arr, SubStr, objStr, NewLine
- Arr = Split(ReadStr, vbCrLf)
- For Each SubStr In Arr
- i = i + 1
- j = i Mod 2
- objStr = objStr & SubStr & vbCrLf
- If j = 0 Then objStr = objStr & vbCrLf
- Next
- objFSO.OpenTextFile("a.txt", 2, True).Write objStr
- Set objFSO = Nothing
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |