中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 19:02
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎样复制指定内容到指定文件里去
楼 主 怎样复制指定内容到指定文件里去 发表于 2006-03-31 21:55 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
WinXP下,想复制1.txt第三行之后的所有文本内容到一个指定的文本文件中去,请问如何实现?
2 发表于 2006-04-01 07:50 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线

for /f "skip=3 tokens=*" %i in (1.txt) do @echo %i >>指定文件.txt

如果在批处理中使用将%i更改为%%i
3 发表于 2006-04-01 12:59 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
那如果只要其中的几行呢?比如一个文本文件有100行,现在只需要其中的20~25行和30行之后的内容,该如何编写呢?
另外,如果想让提取后的文件内容格式与原文件格式保持一致,比如在35行到40行之间有空行,并且有文字的行行首都有空格,该如何实现?

[ Last edited by namejm on 2006-4-1 at 13:14 ]
4 发表于 2006-04-01 16:50 ·  中国 重庆 巴南区 电信
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
UID 32861
性别 男
状态 离线
用批处理实现起来应该很复杂用VBS来就简单很多
http://www.msfans.net/bbs/
5 发表于 2006-04-01 19:07 ·  中国 河北 保定 移动
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
UID 1565
性别 男
来自 河北保定
状态 离线
试试Horst的Lmod程序。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
6 发表于 2006-04-02 00:55 ·  中国 辽宁 锦州 中移铁通
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
UID 40733
性别 男
状态 离线
你可以尝试用 sed 解决一下

sed -n "3,$p" 1.txt >temp.txt

sed 下载地址:
http://www.student.northpark.edu/pemente/sed/gsed407x.zip
  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

7 发表于 2006-04-02 12:44 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
想不借助第三方软件,仅通过DOS批处理来实现,会很复杂么?
8 发表于 2006-04-02 12:45 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
同意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的,可惜忘记了.
论坛跳转: