标题: 按要求逐行处理文件文本
[打印本页]
作者: junyee
时间: 2009-6-12 08:48
标题: 按要求逐行处理文件文本
有一文本文件,如下
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 (不是第三行的子项,保留本行)
判断是不是上一行的子项对我来说难度过高啦,何况还有一个"\"这也很棘手.
请高手帮忙则个.
不知道这样的标题是否违规,反正我觉得这问题不怎么好描述.
坛里处理文本的帖子实在太多了.不过不太好找,因为有许多重复的问题被提出.
希望有热心的朋友帮忙整理一下,也好让像我一样的新手能够更方便地学习哈..
作者: DXSX
时间: 2009-6-13 22:40
用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 ]