Board logo

标题: [请教]在文本文件中添加换行符 [打印本页]

作者: hwtan     时间: 2006-10-25 23:40    标题: [请教]在文本文件中添加换行符
请教: 有一个文本文件“aa.txt”,我想利用批处理把文件中每行固定的某个字符位置添加一个换行,或者是将固定的字符串“abdcd”替换成换行符,修改后的文件要另存为新的文件。 谢谢!!!! [ Last edited by namejm on 2006-10-26 at 05:51 AM ]

作者: NaturalJ0     时间: 2006-10-25 23:43
如果果真如你所说,只有“一个”这样的文件的话,建议你用 WORD 的替换功能。

作者: hwtan     时间: 2006-10-25 23:50
Originally posted by NaturalJ0 at 2006-10-25 11:43 PM: 如果果真如你所说,只有“一个”这样的文件的话,建议你用 WORD 的替换功能。
我是要让它自动执行的,因为这个文本文件是隔几分钟内容变一次,所以用不了word替换啊。

作者: 9527     时间: 2006-10-26 00:21
没有具体的文件和格式是不好判断特殊性的,不好解答........

作者: hwtan     时间: 2006-10-26 00:43
Originally posted by 9527 at 2006-10-26 12:21 AM: 没有具体的文件和格式是不好判断特殊性的,不好解答........
aa.txt 文件: adfasdfasdf 12342341 asdf99jads xxaaasdzfvs 1fadfadfd dfasdfdsfaasdfasdfasdf dfasdfasdfa adfasdfasdadfasdfasdfsdf 。。。。 aa.txt文件是不断在增加的,不过要在每行添加一个换行的位置是不变的,例如都是在第一串字符串后面就换行。

作者: namejm     时间: 2006-10-26 01:15
  试试下面的代码:
@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

作者: 3742668     时间: 2006-10-26 01:18
用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解决也可以跟贴说明.

作者: hwtan     时间: 2006-10-26 02:14
Originally posted by 3742668 at 2006-10-26 01:18 AM: 用bat涉及到特殊字符,相对来说容错以及效率都不是很好,此类问题建议用vbs来解决: [code] On Error Resume Next strFileName = WScript.Arguments(0) strReplace = ...
非常感谢啊,不过我试了下,弹出“下标越界”的对话框,运行终止。

作者: hwtan     时间: 2006-10-26 05:18
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 06:39
我一直喜欢向别人推荐 SED ,如果愿意尝试的话可以试一下。 sed "s/abdcd/\n/g" a.txt sed 下载:www.student.northpark.edu ... [ Last edited by 无奈何 on 2006-10-26 at 02:46 PM ]

作者: vkill     时间: 2006-10-26 07:38
sed 确实很好~

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

作者: 3742668     时间: 2006-10-26 10:57
Originally posted by hwtan at 2006-10-26 02:14: 非常感谢啊,不过我试了下,弹出“下标越界”的对话框,运行终止。
开头有没有 On Error Resume Next 这句? 12F的,新同志可以犯老问题,不过老同志就不要犯了,老贴,还得搜老贴.

作者: hwtan     时间: 2006-10-27 20:34
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”省略掉了。 版主能否帮忙解决下“下标越界”这问题呢?

作者: wudixin96     时间: 2007-4-6 22:08
高啊。要仔细琢磨琢磨才行。

作者: shanhuhai     时间: 2010-12-31 18:23
留名