中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [请教]在文本文件中添加换行符
« [1] [2] »
作者:
标题: [请教]在文本文件中添加换行符 上一主题 | 下一主题
hwtan
新手上路





积分 14
发帖 6
注册 2006-10-25
状态 离线
『楼 主』:  [请教]在文本文件中添加换行符

请教:
有一个文本文件“aa.txt”,我想利用批处理把文件中每行固定的某个字符位置添加一个换行,或者是将固定的字符串“abdcd”替换成换行符,修改后的文件要另存为新的文件。

谢谢!!!!

[ Last edited by namejm on 2006-10-26 at 05:51 AM ]

2006-10-25 23:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 2 楼』:  

如果果真如你所说,只有“一个”这样的文件的话,建议你用 WORD 的替换功能。

2006-10-25 23:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hwtan
新手上路





积分 14
发帖 6
注册 2006-10-25
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by NaturalJ0 at 2006-10-25 11:43 PM:
如果果真如你所说,只有“一个”这样的文件的话,建议你用 WORD 的替换功能。

我是要让它自动执行的,因为这个文本文件是隔几分钟内容变一次,所以用不了word替换啊。

2006-10-25 23:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 4 楼』:  

没有具体的文件和格式是不好判断特殊性的,不好解答........



我今后在论坛的目标就是做个超级坏人!!!
2006-10-26 00:21
查看资料  发短消息 网志  OICQ (329429)  编辑帖子  回复  引用回复
hwtan
新手上路





积分 14
发帖 6
注册 2006-10-25
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by 9527 at 2006-10-26 12:21 AM:
没有具体的文件和格式是不好判断特殊性的,不好解答........

aa.txt 文件:
adfasdfasdf   12342341 asdf99jads
xxaaasdzfvs   1fadfadfd  dfasdfdsfaasdfasdfasdf
dfasdfasdfa   adfasdfasdadfasdfasdfsdf
。。。。

aa.txt文件是不断在增加的,不过要在每行添加一个换行的位置是不变的,例如都是在第一串字符串后面就换行。

2006-10-26 00:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 6 楼』:  

  试试下面的代码:
@echo off
cd.>test.txt
for /f "tokens=1*" %%i in (aa.txt) do (
    >>test.txt echo %%i
    >>test.txt echo %%j
)
start test.txt




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-26 01:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 7 楼』:  

用bat涉及到特殊字符,相对来说容错以及效率都不是很好,此类问题建议用vbs来解决:
On Error Resume Next
    strFileName = WScript.Arguments(0)
    strReplace = WScript.Arguments(1)
    If Len(Trim(strFileName)) = 0 Then
        Set objFile = CreateObject("SAFRCFileDlg.FileOpen")
            intRet = objFile.OpenFileOpenDlg
            If intRet Then
                strFileName = objFile.FileName
                Set objFile = Nothing
            Else
                Set objFile = Nothing
                WScript.Quit
            End If
    End If
    If Len(strReplace) = 0 Then
        strReplace = InputBox("输入要替换为回车的字符:")
        If Len(strReplace) = 0  Then WScript.Quit
    End If


Set objFile = CreateObject("Scripting.FileSystemObject")
Set f = objFile.OpenTextFile(strFileName,1)
    If Err.Number <> 0 Then WScript.Echo Err.Description :WScript.Quit
    strTmp = f.ReadAll
    strTmp = Replace(strTmp,strReplace,Chr(13) & Chr(10))
    f.Close
    Set f = Nothing
    Set f= objFile.OpenTextFile(strFileName & ".txt",2,True)
    f.Write strTmp
    f.Close
    Set f = Nothing
    Set objfile = Nothing
   
   
当然,如果确实想用bat解决也可以跟贴说明.

2006-10-26 01:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hwtan
新手上路





积分 14
发帖 6
注册 2006-10-25
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by 3742668 at 2006-10-26 01:18 AM:
用bat涉及到特殊字符,相对来说容错以及效率都不是很好,此类问题建议用vbs来解决:
[code]
On Error Resume Next
    strFileName = WScript.Arguments(0)
    strReplace =  ...

非常感谢啊,不过我试了下,弹出“下标越界”的对话框,运行终止。

2006-10-26 02:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hwtan
新手上路





积分 14
发帖 6
注册 2006-10-25
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by 3742668 at 2006-10-26 01:18 AM:
用bat涉及到特殊字符,相对来说容错以及效率都不是很好,此类问题建议用vbs来解决:
[code]
On Error Resume Next
    strFileName = WScript.Arguments(0)
    strReplace =  ...

非常谢谢!!!!

2006-10-26 05:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 10 楼』:  

我一直喜欢向别人推荐 SED ,如果愿意尝试的话可以试一下。
sed "s/abdcd/\n/g" a.txt
sed 下载:http://www.student.northpark.edu/pemente/sed/gsed407x.zip

[ Last edited by 无奈何 on 2006-10-26 at 02:46 PM ]



  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2006-10-26 06:39
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 11 楼』:  

sed 确实很好~

2006-10-26 07:38
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 12 楼』:  


  恩,版主推荐的这个小工具比较好用,可以轻松解决用批处理比较难解决的字符处理问题。
  
  另外,sed的帮助命令太少,版主可不可以把sed命令的使用技巧和其它的用法介绍介绍啊?


2006-10-26 10:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by hwtan at 2006-10-26 02:14:


非常感谢啊,不过我试了下,弹出“下标越界”的对话框,运行终止。

开头有没有 On Error Resume Next 这句?

12F的,新同志可以犯老问题,不过老同志就不要犯了,老贴,还得搜老贴.

2006-10-26 10:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hwtan
新手上路





积分 14
发帖 6
注册 2006-10-25
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by 3742668 at 2006-10-26 10:57 AM:

开头有没有 On Error Resume Next 这句?

12F的,新同志可以犯老问题,不过老同志就不要犯了,老贴,还得搜老贴.

开头就是有那句啊,后来我干脆把
“If Err.Number <> 0 Then WScript.Echo Err.Description :WScript.Quit”省略掉了。
版主能否帮忙解决下“下标越界”这问题呢?

2006-10-27 20:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 15 楼』:  

高啊。要仔细琢磨琢磨才行。

2007-4-6 22:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: