中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 04:50
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何提出文本文件中某固定行的前第一行内容? 查看 1,025 回复 8
楼 主 如何提出文本文件中某固定行的前第一行内容? 发表于 2007-08-11 10:42 ·  中国 广东 河源 电信
中级用户
★★
积分 201
发帖 72
注册 2005-11-20 20:57
20年会员
UID 45624
状态 离线
一个文本文件中有二十多行,某行的中有一固定字符是“ABC”,想通过这个固定字符的行查找出在它前面的前第一行的内容(即要查找的行与有固定字符的行中间隔着一行),并使之成为变量。(在XP的命令行中操作,尽量不用第三方工具)
如:

......
......
......
skfsljfk (此行即是要查找的行,内容变化的)
aaafdssd
ABC (此行内容是固定的,为ABC)
......
......
2 发表于 2007-08-11 11:07 ·  中国 北京 联通
中级用户
★★
替身
积分 269
发帖 130
注册 2007-03-23 21:41
19年会员
UID 82683
性别 女
状态 离线
感觉代码还是有些臃肿,没有测试,先试试吧


@echo off&setlocal
for /f "delims=:" %%? in ('findstr /n .* 文件.txt^|findstr "^*:ABC$"') do set c=%%?
set /a d=%c%-2
for /f "tokens=1* delims=:" %%a in ('findstr /n .* 文件.txt^|findstr "^%d%:.*"') do set e=%%b
echo.%e%


[ Last edited by ansipeter on 2007-8-11 at 11:09 AM ]
3 发表于 2007-08-11 11:21 ·  中国 广东 河源 电信
中级用户
★★
积分 201
发帖 72
注册 2005-11-20 20:57
20年会员
UID 45624
状态 离线
终于测试成功了,谢谢。
另外有没有更简单的代码呢?

[ Last edited by cain on 2007-8-11 at 11:50 AM ]
4 发表于 2007-08-11 12:33 ·  中国 北京 朝阳区 联通
高级用户
★★
朦胧的世界
积分 579
发帖 218
注册 2006-10-24 04:29
19年会员
UID 67972
状态 离线
过多的管道符会影响速度.


@echo off
for /f "delims=:" %%a in ('findstr/nx "ABC" test.txt') do set/a row=%%a-3
for /f "skip=%row% delims=" %%a in (test.txt) do echo.%%a&&goto end
:end
pause&exit

认识自己,降伏自己,改变自己
,才能改变别人!
5 发表于 2007-08-11 14:55 ·  中国 广东 河源 电信
中级用户
★★
积分 201
发帖 72
注册 2005-11-20 20:57
20年会员
UID 45624
状态 离线
4楼的代码很不错,可惜如果ABC这个固定的字符换成:“CC ABC”即有空格的字符就会出错,请问该如何改呢?
6 发表于 2007-08-11 15:09 ·  中国 北京 联通
中级用户
★★
替身
积分 269
发帖 130
注册 2007-03-23 21:41
19年会员
UID 82683
性别 女
状态 离线
其实我还是劝楼主多看看帮助,我想即使你看了帮助也不是很认真
把这句改成
for /f "delims=:" %%a in ('findstr/nx /c:"CC ABC" test.txt') do set/a row=%%a-
3
试试
7 发表于 2008-04-15 19:34 ·  中国 上海 奉贤区 电信
中级用户
★★
积分 392
发帖 142
注册 2007-06-10 09:48
19年会员
UID 90856
性别 男
状态 离线
4楼的,我运行你的文件怎么显示错误啊
8 发表于 2008-04-15 19:36 ·  中国 陕西 西安 电信
社区乞丐
积分 -66
发帖 40
注册 2008-03-25 13:42
18年会员
UID 113959
性别 男
状态 离线
这个问题很简单啊
9 发表于 2008-04-17 08:16 ·  中国 上海 奉贤区 电信
中级用户
★★
积分 392
发帖 142
注册 2007-06-10 09:48
19年会员
UID 90856
性别 男
状态 离线
?
论坛跳转: