![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 12:30 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]批量删除具有相同文本格式文件中的一部分 |
| 可打印版本 1,530 / 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 |