中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 14:43
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]批量删除具有相同文本格式文件中的一部分
可打印版本  1,532 / 11
第1楼 lqs623 发表于 2010-04-08 19:44
贫困用户 发帖 30 积分 -3
[求助]批量删除具有相同文本格式文件中的一部分
即批量提取具有相同文本格式文件中的一段,各自保存为原文件名的文件,或各自保存为包含原文名的文件。格式如下:(也是说明)

第一:
┌──────────────────────────────────────────────────┐
|有很多个文件都有“ 第一: 第二: 第三:”的这种格式,只提取从“第二:”开始到“第三:”以前的内容, |
|(大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。 |
└──────────────────────────────────────────────────┘
R*1
第二:
┌───────────────────────────────────────────────────┐
|或者叫批量删除具有相同文本格式文件中的一部分,只保留其中的一段,文件较大需提取的内容较少(要考虑速度)|
|是大批量文件处理。在各自原文上删除,即各自的文件名不改名。或各自的文件名包含各自的原文名也可。 |
└───────────────────────────────────────────────────┘
R*2
第三:
┌─────────────────────────────────────────────────┐
|也就是说,很多个文件都有“ 第一: 第二: 第三:”的这种格式,在各自的文件上保存要的内容,删除不要 |
|的内容,各自的文件名不变。或各自的文件名包含各自的原文名也可。(大批量处理) |
└─────────────────────────────────────────────────┘
R*3
用以下批处理执行以上内容保存的aa.txt,能生成手工加上的文件名文件三个txt(注:上面的R*1.R*2.R*3原文中没有)
for /f "tokens=1,2 delims=*" %%f in (aa.txt) do @if "%%f"=="R" (ren temp %%g.txt) else (echo %%f>>temp)
第2楼 Hanyeguxing 发表于 2010-04-08 23:24
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
你的问题说的不够清楚...反正我看迷糊了...
第3楼 lqs623 发表于 2010-04-09 09:38
贫困用户 发帖 30 积分 -3
补充说明:有多个txt文件都有“ 第一. 第二. 第三.”的这种格式(也就是都含有 “第一 第二 第三 ”字符),文件如下:

第一
┌──────────────────────────────────────────────────┐
|有很多个文件都有“ 第一 第二 第三 ”的这种格式,只提取从“第二:”开始到“第三:”以前的内容, |
|(大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。 |
└──────────────────────────────────────────────────┘
第二
┌───────────────────────────────────────────────────┐
|或者叫批量删除具有相同文本格式文件中的一部分,只保留其中的一段,文件较大需提取的内容较少(要考虑速度)|
|是大批量文件处理。在各自原文上删除,即各自的文件名不改名。或各自的文件名包含各自的原文名也可。 |
└───────────────────────────────────────────────────┘
第三
┌─────────────────────────────────────────────────┐
|也就是说,很多个文件都有“ 第一: 第二: 第三:”的这种格式,在各自的文件上保存要的内容,删除不要 |
|的内容,各自的文件名不变。或各自的文件名包含各自的原文名也可。(大批量处理) |
└─────────────────────────────────────────────────┘


以上是要处理的原文,在各个文件里都有“第一 第二 第三 字符”只是边框里的内容不同

问题:要对这些txt文件做到在原文件里(文件名不变)(有很多个txt文件同时处理)只保留一段如下:

第二
┌───────────────────────────────────────────────────┐
|或者叫批量删除具有相同文本格式文件中的一部分,只保留其中的一段,文件较大需提取的内容较少(要考虑速度)|
|是大批量文件处理。在各自原文上删除,即各自的文件名不改名。或各自的文件名包含各自的原文名也可。 |
└───────────────────────────────────────────────────┘

[ Last edited by lqs623 on 2010-4-9 at 09:40 ]
第4楼 Hanyeguxing 发表于 2010-04-09 14:20
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
1,批处理放到工作目录下!
2,工作目录中除需要被处理的.txt文件外,不应有其他.txt文件!
3,操作前最好将所有被处理的文件备份!

如果文件中不含指定内容,则文件将被清空,且不保留原文件中的空行,并删除所有以 ; 开头的行,则:


如果要保留原文件中的空行、以 ; 开头的行,则


如果如果要保留原文件中的空行、以 ; 开头的行,
且如果原文件中不含指定内容,还需要保留此文件,则


[ Last edited by Hanyeguxing on 2010-4-9 at 17:01 ]
第5楼 lqs623 发表于 2010-04-09 16:52
贫困用户 发帖 30 积分 -3
补充说明:有多个txt文件都有“ 第一. 第二. 第三.”的这种格式(也就是都含有 “第一 第二 第三 ”字符),文件如下:
第一个文件是如下:

第一
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzz
┌──────────────────────────────────────────────────┐
|有很多个文件都有“ 第一 第二 第三 ”的这种格式,只提取从“第二:”开始到“第三:”以前的内容, |
|(大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。 |
└──────────────────────────────────────────────────┘
yyyyyyyyyyyyyyyyyyyyyyyyyyyyy
第二
┌─xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx───
xxxxxxxxxxxxxxxxx或者叫批量删除具有相同文本格式文件中的一部分,只保留其中的一段,文件较大需提取的内容较少(要考虑速度)x
|是大批量文件处理。在各自原文上删除,即各自的文件名不改名。或各自的文件名包含各自的原文名也可。 x
└───────────xxxxxxxxxxxxxxxxx───────────────────────────────x
yyyyyyyyyyyyyyyyyyyyyyyyyy
第三
┌─────────────────────────────────────────────────┐
|也就是说,很多个文件都有“ 第一: 第二: 第三:”的这种格式,在各自的文件上保存要的内容,删除不要 |
|的内容,各自的文件名不变。或各自的文件名包含各自的原文名也可。(大批量处理) |
└─────────────────────────────────────────────────┘

第二个文件是如下:(说明:在各个文件中从“第一”到“第二”所处的段落不一定,字符长短不一样,格式不一样)


第一

xxxxxxxxxxx

yyyyyyyyyyyyyyy
|有很多个文件都有“ 第一 第二 第三 ”的这种格式,只提取从“第二:”开始到“第三:”以前的内容,
|(大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


第二
(================================================================================================
(或者叫批量删除具有相同文本格式文件中的一部分,只保留其中的一段,文件较大需提取的内容较少度)}
(是大批量文件处理。在各自原文上删除,即各自的文件名不改名。或各自的文件名包含各自的原文名也可。

((大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。
((大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。
└8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
xxxxxxxxxxx
yyyyyyyyyyyyyyyyyyyyyyyyyy

第三
┌─────────────────────────────────────────────────┐
|也就是说,很多个文件都有“ 第一: 第二: 第三:”的这种格式,在各自的文件上保存要的内容,删除不要 |
|的内容,各自的文件名不变。或各自的文件名包含各自的原文名也可。(大批量处理) |
└─────────────────────────────────────────────────┘

需要得到第一个文件是:

第二
┌─xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx───
xxxxxxxxxxxxxxxxx或者叫批量删除具有相同文本格式文件中的一部分,只保留其中的一段,文件较大需提取的内容较少(要考虑速度)x
|是大批量文件处理。在各自原文上删除,即各自的文件名不改名。或各自的文件名包含各自的原文名也可。 x
└───────────xxxxxxxxxxxxxxxxx───────────────────────────────x
yyyyyyyyyyyyyyyyyyyyyyyyyy

需要得到第二个文件是:(有没有空行都行)

第二
(================================================================================================
(或者叫批量删除具有相同文本格式文件中的一部分,只保留其中的一段,文件较大需提取的内容较少度)}
(是大批量文件处理。在各自原文上删除,即各自的文件名不改名。或各自的文件名包含各自的原文名也可。

((大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。
((大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。
└8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
xxxxxxxxxxx
yyyyyyyyyyyyyyyyyyyyyyyyyy
第6楼 Hanyeguxing 发表于 2010-04-09 16:58
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
上面写了3个P脚本,你根据情况自己选呗
第7楼 lqs623 发表于 2010-04-09 17:26
贫困用户 发帖 30 积分 -3
非常感谢你都做到了。再次谢谢!

[ Last edited by lqs623 on 2010-4-9 at 17:47 ]
第8楼 lqs623 发表于 2010-04-09 20:57
贫困用户 发帖 30 积分 -3
再请问:如果要以`;开头的行既“`第一`;`第二`;`第三`”上面的3个P脚本怎样改
第9楼 Hanyeguxing 发表于 2010-04-09 21:20
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
没明白你的意思
for /f在处理文件时,默认会忽略不处理以英文分号;开头的行,这样会导致输出时丢失这些行,解决的方法就是使用eol=
批处理一般只对英文符号敏感,所以你要明确是否是英文符号.
最好贴出部分文件内容
第10楼 lqs623 发表于 2010-04-09 21:37
贫困用户 发帖 30 积分 -3
文件如下:(目的与上面的3个P脚本一样)


`第一`

xxxxxxxxxxx

yyyyyyyyyyyyyyy
|有很多个文件都有“ 第一 第二 第三 ”的这种格式,只提取从“第二:”开始到“第三:”以前的内容,
|(大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


`第二`
(================================================================================================
(或者叫批量删除具有相同文本格式文件中的一部分,只保留其中的一段,文件较大需提取的内容较少度)}
(是大批量文件处理。在各自原文上删除,即各自的文件名不改名。或各自的文件名包含各自的原文名也可。

((大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。
((大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。
└8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
xxxxxxxxxxx
yyyyyyyyyyyyyyyyyyyyyyyyyy


`第三`
┌─────────────────────────────────────────────────┐
|也就是说,很多个文件都有“ 第一: 第二: 第三:”的这种格式,在各自的文件上保存要的内容,删除不要 |
|的内容,各自的文件名不变。或各自的文件名包含各自的原文名也可。(大批量处理) |
└─────────────────────────────────────────────────┘
第11楼 Hanyeguxing 发表于 2010-04-09 22:22
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
把三个批处理中的
if "!b:~0,4!"=="`第二`" set n=1改成if "!b:~0,4!"=="`第二`" set n=1
然后
if "!b:~0,4!"=="`第三`" set n=0改成if "!b:~0,4!"=="`第三`" set n=0
其他不变

[ Last edited by Hanyeguxing on 2010-4-9 at 22:23 ]
第12楼 lqs623 发表于 2010-04-09 23:00
贫困用户 发帖 30 积分 -3
非常感谢,祝你好运。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023