Board logo

标题: 怎样复制指定内容到指定文件里去 [打印本页]

作者: namejm     时间: 2006-3-31 21:55    标题: 怎样复制指定内容到指定文件里去

WinXP下,想复制1.txt第三行之后的所有文本内容到一个指定的文本文件中去,请问如何实现?
作者: 3742668     时间: 2006-4-1 07:50

for /f "skip=3 tokens=*" %i in (1.txt) do @echo %i >>指定文件.txt
如果在批处理中使用将%i更改为%%i
作者: namejm     时间: 2006-4-1 12:59
那如果只要其中的几行呢?比如一个文本文件有100行,现在只需要其中的20~25行和30行之后的内容,该如何编写呢?
另外,如果想让提取后的文件内容格式与原文件格式保持一致,比如在35行到40行之间有空行,并且有文字的行行首都有空格,该如何实现?

[ Last edited by namejm on 2006-4-1 at 13:14 ]
作者: chenhui530     时间: 2006-4-1 16:50
用批处理实现起来应该很复杂用VBS来就简单很多
作者: Climbing     时间: 2006-4-1 19:07
试试Horst的Lmod程序。
作者: 无奈何     时间: 2006-4-2 00:55
你可以尝试用 sed 解决一下
sed -n "3,$p" 1.txt >temp.txt
sed 下载地址:
http://www.student.northpark.edu/pemente/sed/gsed407x.zip
作者: namejm     时间: 2006-4-2 12:44
想不借助第三方软件,仅通过DOS批处理来实现,会很复杂么?
作者: 3742668     时间: 2006-4-2 12:45
同意4楼。
with CreateObject("SAFRCFileDlg.Fileopen")
    .openfileopendlg
    if not len(trim(.filename)) = 0 then
        oldfilename = .filename
    else
        msgbox "没有选择文件!"
        wscript.quit
    end if
end with
newfilename = left(oldfilename,len(oldfilename) - 4) & "cxs" & right(oldfilename,4)
number1 = inputbox("输入起始行号:")
number2 = inputbox("输入行数:")
with createobject("scripting.filesystemobject")
    set rfile = .opentextfile(oldfilename,1,true)
    set wfile = .opentextfile(newfilename,2,true)
    for i = 1 to number1
        rfile.skipline
    next
    for j = 1 to number2
        str = rfile.readline
        wfile.writeline str
    next
end with
保存为  文件处理.vbs 然后双击运行,大致可以满足你的要求。当然,你也可以在批处理里面把代码写到一个vbs文件达到批处理的效果,如果那样的话可以把前面的对话框部分去掉,再加上参数。唉,应该用adodb的,可惜忘记了.