中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 按要求逐行处理文件文本 上一主题 | 下一主题
junyee
中级用户




积分 253
发帖 112
注册 2006-5-31
状态 离线
『楼 主』:  按要求逐行处理文件文本

有一文本文件,如下

HKEY_LOCAL_MACHINE\SYSTEM
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\a b
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\c
。。。

要求通过批处理处理后为

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\a b
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\c

解释
HKEY_LOCAL_MACHINE\SYSTEM

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001  (是第一行的子项,抛弃第一行,保留本行)

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control (是第二行的子项,继续抛弃第二行,保留本行)

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\a b (是第三行的子项,继续抛弃第三行,保留本行)
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\c (不是第三行的子项,保留本行)

判断是不是上一行的子项对我来说难度过高啦,何况还有一个"\"这也很棘手.
请高手帮忙则个.

不知道这样的标题是否违规,反正我觉得这问题不怎么好描述.
坛里处理文本的帖子实在太多了.不过不太好找,因为有许多重复的问题被提出.
希望有热心的朋友帮忙整理一下,也好让像我一样的新手能够更方便地学习哈..

2009-6-12 08:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
DXSX
中级用户





积分 247
发帖 147
注册 2009-4-9
状态 离线
『第 2 楼』:  

用find 搜索判断文件行数,如果内容是独一无二的就传递给文件2.txt

如果 你的文本文件是 1.txt  可以编辑如下代码的1.cmd 批处理 ,然后运行,会生成2.txt 看看2.txt文件的结果吧,是否符合要求。

@echo off
if exist 2.txt del 2.txt
for /f "delims=" %%c in (1.txt) do (
   ECHO 查找 %%c
   for /f "delims=: tokens=1,2" %%d in ('find /i /c "%%c" 1.txt') do (
   echo 发现 %%e 个
   if %%e EQU 1 ECHO %%c >>2.TXT
  )
)

运行原理:
1、用for 逐一摘取文件 1.txt 各行内容 并附变量%%c
2、用find 搜索文件中包含 %%c 内容的行数并通过for 获取行数信息给变量 %%e
3、如果 %%e 等于 1 说明是独一无二的,就将其传递给文件 2.txt

[ Last edited by DXSX on 2009-6-13 at 23:25 ]

2009-6-13 22:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: