标题: [文本处理] 批处理UTF8文本找到特定字符后删除上一行 [打印本页]
作者: leo198444 时间: 2011-6-5 21:49 标题: 批处理UTF8文本找到特定字符后删除上一行
我有一个UTF8文本,假设为A.TXT
希望处理它后不产生乱码,而且以下的文本格式都是纵列的
处理前:
<MATab>
<tabID>tbp0</tabID>
<tabName>中文化</tabName>
<MAButton>
<tabID>tbp0</tabID>
<buttonID>btnMAQ</buttonID>
我希望找到文本里<tabID>tbp0</tabID>这个字符串,然后删除这个字符串的上一行
处理后:
<tabID>tbp0</tabID>
<tabName>中文化</tabName>
<MAButton>
<tabID>tbp0</tabID>
<buttonID>btnMAQ</buttonID>
但<tabID>tbp0</tabID>这个字符串不止一个,如果要单独删除<MATab>这个字符串,就不能以<tabID>tbp0</tabID>作为分隔符
还有一个小请求,希望文本处理以后,可以一样在A.TXT输出
请问该怎么处理
谢谢!
请下载范例脚本
作者: CrLf 时间: 2011-6-5 22:00
为什么删了<MATab>却不删<MAButton>
作者: leo198444 时间: 2011-6-5 22:05
为什么删了却不删
zm900612 发表于 2011-6-5 22:00
我知道这在FOR逻辑里不合理且不好处理
但因为这是特殊XML文本
如果不单独删除掉<MATab>,软件就无法运行
作者: Batcher 时间: 2011-6-5 22:05
能否在顶楼上传一个UTF-8格式的文件供大家测试?
作者: leo198444 时间: 2011-6-5 22:10
能否在顶楼上传一个UTF-8格式的文件供大家测试?
Batcher 发表于 2011-6-5 22:05
已上传了
作者: CrLf 时间: 2011-6-5 22:12
看不懂楼主所举例子中的内在逻辑
作者: Batcher 时间: 2011-6-5 22:14
3# leo198444
问题不是在for里面是否容易处理
关键在于:
<MATab>和<MAButton>同样都是在<tabID>tbp0</tabID>的上一行,为何区别对待?
作者: leo198444 时间: 2011-6-5 22:20
3# leo198444
问题不是在for里面是否容易处理
关键在于:
和同样都是在tbp0的上一行,为何区别对待?
Batcher 发表于 2011-6-5 22:14
这就讨论到软件运行的原理了
因为<MAButton>是包含子选单
<MATab>是包含主选单
如果更简单说
就是我要把<MATab>删除,让软体变子选单就对了@@
我用NSIS封装软件虽然不用烦恼编码问题,但找不到方法处理
作者: Batcher 时间: 2011-6-5 22:25
我希望找到文本里<tabID>tbp0</tabID>这个字符串,然后删除这个字符串的上一行
但<tabID>tbp0</tabID>这个字符串不止一个,如果要单独删除<MATab>这个字符串,就不能以<tabID>tbp0</tabID>作为分隔符
额滴个神啊,实在搞不懂你着两个要求是怎样和谐并存的。
猜一下吧:
如果发现<tabID>tbp0</tabID>的上一行是<MATab>,就把<MATab>删掉。
是这个意思不?
作者: leo198444 时间: 2011-6-5 22:28
额滴个神啊,实在搞不懂你着两个要求是怎样和谐并存的。
猜一下吧:
如果发现tbp0的上一行是,就把删掉。
是这个意思不?
Batcher 发表于 2011-6-5 22:25
是的
因为NSIS只能对横列文本作处理
所以我逻辑上解释不正确,很抱歉
就是这样处理
作者: leo198444 时间: 2011-6-5 22:37
额滴个神啊
这句很有趣
原来你们也会台湾国语
作者: CrLf 时间: 2011-6-6 12:32
既然两组关键词都是单字节字符,那可以这样:- @echo off&setlocal enabledelayedexpansion
- chcp 437 >nul
- (for /f "delims=" %%a in (leo1984.TXT) do (
- for /f "tokens=1*" %%b in ("!last!,%%a") do (
- if "%%b%%c" neq "<MATab>,<tabID>tbp0</tabID>" echo;!last!
- )
- set last=%%a
- )
- echo;!last!)>b.txt
- more +1 b.txt>a.txt
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |