中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于提取文本内容(新手求助)~~
作者:
标题: 关于提取文本内容(新手求助)~~ 上一主题 | 下一主题
rtsp0815
新手上路





积分 8
发帖 8
注册 2009-2-18
状态 离线
『楼 主』:  关于提取文本内容(新手求助)~~

如有以下文本内容:
dn:1
----------------------------
name:y
type:6x17  port:36
lantx:3  host 3 1 1 3
----------------------------
dn:2
----------------------------
name:undef
type:undef
----------------------------
dn:3
----------------------------
name:y
tyep:6x17    port:29
lantx:3    host 3 2 1 4
-----------------------------

怎么能得到以下输出:
dn:1  3 1 1 3
dn:3  3 2 1 4

请高手指教,不胜感激

2009-2-19 13:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
rtsp0815
新手上路





积分 8
发帖 8
注册 2009-2-18
状态 离线
『第 2 楼』:  

因需处理数据量较大,在线等待中。。。

2009-2-19 13:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 3 楼』:  


@echo off
Setlocal Enabledelayedexpansion
for /f "tokens=1,2,*" %%i in ('more +13^<%~fs0') do (
  set var=%%i
  if "!var:~,2!"=="dn" (
    set str=%%i
  ) else (
    if "!var:~,5!"=="lantx" (
      echo !str! %%k
    )
  )
)
pause&goto :eof
dn:1
----------------------------
name:y
type:6x17  port:36
lantx:3  host 3 1 1 3
----------------------------
dn:2
----------------------------
name:undef
type:undef
----------------------------
dn:3
----------------------------
name:y
tyep:6x17    port:29
lantx:3    host 3 2 1 4
-----------------------------


2009-2-19 14:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
rtsp0815
新手上路





积分 8
发帖 8
注册 2009-2-18
状态 离线
『第 4 楼』:  

楼上的我测试过,能行,但是我是想从这个文件中提取出来另外生成一个文件

2009-2-19 15:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
rtsp0815
新手上路





积分 8
发帖 8
注册 2009-2-18
状态 离线
『第 5 楼』:  

相当于文件1.txt里面是以下内容:
dn:1
----------------------------
name:y
type:6x17  port:36
lantx:3  host 3 1 1 3
----------------------------
dn:2
----------------------------
name:undef
type:undef
----------------------------
dn:3
----------------------------
name:y
tyep:6x17    port:29
lantx:3    host 3 2 1 4
-----------------------------
处理后的文件2.txt内容为:
dn:1  3 1 1 3
dn:3  3 2 1 4

2009-2-19 15:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 6 楼』:  


@echo off
setlocal enabledelayedexpansion
(
  for /f "eol=- tokens=1,2,* delims=t" %%a in (1.txt) do (
    if "%%a" lss "e" (
      set dn=%%a
    ) else (
      if "%%a" lss "m" echo !dn!%%c
    )
  )
)>2.txt
[ Last edited by tireless on 2009-2-19 at 15:37 ]

2009-2-19 15:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 7 楼』:  

其实自己改一改就行了...
@echo off
type nul>2.txt
Setlocal Enabledelayedexpansion
for /f "tokens=1,2,*" %%i in ('type 1.txt') do (
  set var=%%i
  if "!var:~,2!"=="dn" (
    set str=%%i
  ) else (
    if "!var:~,5!"=="lantx" (
      echo !str! %%k
    )
  )
)>>2.txt
start 2.txt


2009-2-19 15:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
rtsp0815
新手上路





积分 8
发帖 8
注册 2009-2-18
状态 离线
『第 8 楼』:  

请问有人能逐行解释一下上面的批命令吗?

2009-2-22 16:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
rtsp0815
新手上路





积分 8
发帖 8
注册 2009-2-18
状态 离线
『第 9 楼』:  

还有就是如果1.txt的内容变为:
dn:1
----------------------------
name:y
type:6x17  port:36
lantx at:3  host 3 1 1 3
lantx ut:std
----------------------------
dn:2
----------------------------
name:undef
type:undef
----------------------------
dn:3
----------------------------
name:y
tyep:6x17    port:29
lantx at:3    host 3 2 1 4
lantx ut:std
----------------------------
又该怎么处理呢?
谢谢~~

2009-2-22 16:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 10 楼』:  Re 8楼

哪句不懂,就问哪句,有很多热心人会告诉你答案;如果全部不懂,建议先去学习基础教程,这样才能更快的掌握批处理。



2009-2-22 17:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
rtsp0815
新手上路





积分 8
发帖 8
注册 2009-2-18
状态 离线
『第 11 楼』:  

呵呵,不好意思,其实主要是这个if "!var:~,2!"=="dn" 不知道是什么意思

2009-2-22 18:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 12 楼』:  Re 11楼

参考:理解变量字符的截取功能
http://www.cn-dos.net/forum/viewthread.php?tid=25746



2009-2-22 21:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
rtsp0815
新手上路





积分 8
发帖 8
注册 2009-2-18
状态 离线
『第 13 楼』:  

看明白了,谢谢斑竹

2009-2-22 22:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 14 楼』:  Re 13楼

如果有人帮你解决了问题,建议进行以下操作:

1、修改帖子标题,在标题最前面注明:[已结]

2、给正确回答问题者加分(你自己的积分不会减少)以示感谢,虽然大家来论坛是为了学习而不是为了积分,但加分聊表谢意总是或多或少能够让花费了时间和精力无私帮助你的人略感欣慰。

3、如果你是在别人的提示下自己写出了代码,请把自己的方法贴出来跟大家分享一下,也许他人可以帮你指出代码中的不足之处、告诉你如何提高执行效率等,有交流才能更快地进步。



2009-2-22 22:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: