中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-14 22:38
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何把一个文件的第3行——第90行的内容找出来? 查看 1,698 回复 9
楼 主 如何把一个文件的第3行——第90行的内容找出来? 发表于 2007-04-27 00:59 ·  中国 河北 廊坊 霸州市 电信
初级用户
积分 36
发帖 20
注册 2007-04-19 05:27
19年会员
UID 85695
性别 男
状态 离线
如何把一个文件的第3行——第90行的内容找出来,并传递给新的*.txt文件!谢谢!
2 发表于 2007-04-27 02:03 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
skip 2行,读一次>new.txt

skip 89行,读一次>>new.txt
3 发表于 2007-04-27 02:07 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
我好像写过,找不着了
4 发表于 2007-04-27 02:15 ·  中国 北京 联通
中级用户
★★
替身
积分 269
发帖 130
注册 2007-03-23 21:41
19年会员
UID 82683
性别 女
状态 离线

for /f "tokens=1* delims=:" %a in ('findstr /n .* test.txt^|findstr /r /c:"^2:" /c:"^89:"') do @echo %b
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
everest79 +15 2007-04-27 02:17
5 发表于 2007-04-27 02:24 ·  中国 新疆 乌鲁木齐 天山区 电信
高级用户
★★★
Autowalk
积分 845
发帖 375
注册 2007-03-03 01:58
19年会员
UID 80606
性别 男
状态 离线
4楼能解释下代码吗?
6 发表于 2007-04-27 02:32 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
@echo off

for /f "skip=2 delims=" %%i in (1.txt) do (
@echo %%i>>Out.txt
goto Next
)
:Next
for /f "skip=89 delims=" %%i in (1.txt) do (
@echo %%i>>Out.txt
goto Exit
)
:Exit
pause>nul


还是觉得自己的这种好……如果行数比较多上面的FINDSTR要把文本都加上行数……再过滤……
7 发表于 2007-04-27 06:02 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 302
发帖 138
注册 2007-03-29 02:33
19年会员
UID 83224
性别 男
状态 离线
如果楼主是要第3行到第90行的内容的话可以这样
@echo off
for /l %%a in (3,1,90) do call :need %%a
:need
for /f "tokens=1* delims=:" %%i in ('findstr /n . 1.txt') do if %%i==%1 echo %%j>>2.txt
8 发表于 2007-04-27 12:29 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

for /f "delims=: tokens=1*" %%a in ('findstr/n .* test.txt') do @(if %%a equ 3 (echo\%%b) else (if %%a equ 90 echo\%%b))>>ok.txt


[ Last edited by lxmxn on 2007-4-27 at 10:38 AM ]
9 发表于 2007-04-27 23:45 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
原格式输出,不能输出空行
@echo off
for /l %%n in (3,1,90) do call :need %%n
pause
exit

:need
set /a line=%1-1
for /f "skip=%line% delims=" %%i in ('more test.txt') do (
echo %%i
goto :eof
)


可以输出空行,但每行不能含有和行号相同的“行号:”字符,不能输出“!、:”字符及同行中“!、:”字符包围的字符
@echo off
setlocal EnableDelayedExpansion
for /l %%n in (31,90) do call :need %%n
pause
exit

:need
set /a line=%1-1
for /f "skip=%line% delims=" %%i in ('findstr /n .* "test.txt"') do (
set "str=%%i"
set "str=!str:%1:=!"
if not "!str!" == "" (echo !str!) else echo.
goto :eof
)


[ Last edited by zh159 on 2007-4-27 at 10:49 AM ]
10 发表于 2007-04-28 00:38 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
sed "3,90!d" life
论坛跳转: