|
lqs623
贫困用户
积分 -3
发帖 30
注册 2007-8-13
状态 离线
|
『楼 主』:
[求助]批量删除具有相同文本格式文件中的一部分
即批量提取具有相同文本格式文件中的一段,各自保存为原文件名的文件,或各自保存为包含原文名的文件。格式如下:(也是说明)
第一:
┌──────────────────────────────────────────────────┐
|有很多个文件都有“ 第一: 第二: 第三:”的这种格式,只提取从“第二:”开始到“第三:”以前的内容, |
|(大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。 |
└──────────────────────────────────────────────────┘
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)
|
|
2010-4-8 19:44 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
|
2010-4-8 23:24 |
|
|
lqs623
贫困用户
积分 -3
发帖 30
注册 2007-8-13
状态 离线
|
『第
3 楼』:
补充说明:有多个txt文件都有“ 第一. 第二. 第三.”的这种格式(也就是都含有 “第一 第二 第三 ”字符),文件如下:
第一
┌──────────────────────────────────────────────────┐
|有很多个文件都有“ 第一 第二 第三 ”的这种格式,只提取从“第二:”开始到“第三:”以前的内容, |
|(大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。 |
└──────────────────────────────────────────────────┘
第二
┌───────────────────────────────────────────────────┐
|或者叫批量删除具有相同文本格式文件中的一部分,只保留其中的一段,文件较大需提取的内容较少(要考虑速度)|
|是大批量文件处理。在各自原文上删除,即各自的文件名不改名。或各自的文件名包含各自的原文名也可。 |
└───────────────────────────────────────────────────┘
第三
┌─────────────────────────────────────────────────┐
|也就是说,很多个文件都有“ 第一: 第二: 第三:”的这种格式,在各自的文件上保存要的内容,删除不要 |
|的内容,各自的文件名不变。或各自的文件名包含各自的原文名也可。(大批量处理) |
└─────────────────────────────────────────────────┘
以上是要处理的原文,在各个文件里都有“第一 第二 第三 字符”只是边框里的内容不同
问题:要对这些txt文件做到在原文件里(文件名不变)(有很多个txt文件同时处理)只保留一段如下:
第二
┌───────────────────────────────────────────────────┐
|或者叫批量删除具有相同文本格式文件中的一部分,只保留其中的一段,文件较大需提取的内容较少(要考虑速度)|
|是大批量文件处理。在各自原文上删除,即各自的文件名不改名。或各自的文件名包含各自的原文名也可。 |
└───────────────────────────────────────────────────┘
[ Last edited by lqs623 on 2010-4-9 at 09:40 ]
|
|
2010-4-9 09:38 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
『第
4 楼』:
1,批处理放到工作目录下!
2,工作目录中除需要被处理的.txt文件外,不应有其他.txt文件!
3,操作前最好将所有被处理的文件备份!
如果文件中不含指定内容,则文件将被清空,且不保留原文件中的空行,并删除所有以 ; 开头的行,则:
@echo off&setlocal enabledelayedexpansion
for %%a in (*.txt) do set n=0&for /f "usebackq delims=" %%b in ("%%a") do (set b=%%b
if "!b:~0,2!"=="第二" set n=1
if "!b:~0,2!"=="第三" set n=0
if !n!==1 echo.%%b)>>"%%~na.hanyeguxing"
del /a/f/q *.txt
ren *.hanyeguxing *.txt 如果要保留原文件中的空行、以 ; 开头的行,则
@echo off&setlocal enabledelayedexpansion
for %%a in (*.txt) do set n=0&for /f "eol= delims=" %%b in ('findstr /n .* "%%a"') do (
set b=%%b&set b=!b:*:=!
if "!b:~0,2!"=="第二" set n=1
if "!b:~0,2!"=="第三" set n=0
if !n!==1 echo.!b!)>>"%%~na.hanyeguxing"
del /a/f/q *.txt
ren *.hanyeguxing *.txt 如果如果要保留原文件中的空行、以 ; 开头的行,
且如果原文件中不含指定内容,还需要保留此文件,则
@echo off&setlocal enabledelayedexpansion
for %%a in (*.txt) do (set n=0&set m=0
for /f "eol= delims=" %%b in ('findstr /n .* "%%a"') do (
set b=%%b&set b=!b:*:=!
if "!b:~0,2!"=="第二" set n=1&set m=1
if "!b:~0,2!"=="第三" set n=0
if !n!==1 echo.!b!)>>"%%~na.hanyeguxing"
if !m!==0 copy "%%a" "%%~na.hanyeguxing")
del /a/f/q *.txt
ren *.hanyeguxing *.txt [ Last edited by Hanyeguxing on 2010-4-9 at 17:01 ]
|
批处理之家 http://bbs.bathome.net/forum-5-1.html |
|
2010-4-9 14:20 |
|
|
lqs623
贫困用户
积分 -3
发帖 30
注册 2007-8-13
状态 离线
|
『第
5 楼』:
补充说明:有多个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
|
|
2010-4-9 16:52 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
|
2010-4-9 16:58 |
|
|
lqs623
贫困用户
积分 -3
发帖 30
注册 2007-8-13
状态 离线
|
『第
7 楼』:
非常感谢你都做到了。再次谢谢!
[ Last edited by lqs623 on 2010-4-9 at 17:47 ]
|
|
2010-4-9 17:26 |
|
|
lqs623
贫困用户
积分 -3
发帖 30
注册 2007-8-13
状态 离线
|
『第
8 楼』:
再请问:如果要以`;开头的行既“`第一`;`第二`;`第三`”上面的3个P脚本怎样改
|
|
2010-4-9 20:57 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
|
2010-4-9 21:20 |
|
|
lqs623
贫困用户
积分 -3
发帖 30
注册 2007-8-13
状态 离线
|
『第
10 楼』:
文件如下:(目的与上面的3个P脚本一样)
`第一`
xxxxxxxxxxx
yyyyyyyyyyyyyyy
|有很多个文件都有“ 第一 第二 第三 ”的这种格式,只提取从“第二:”开始到“第三:”以前的内容,
|(大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
二
`第二`
(================================================================================================
(或者叫批量删除具有相同文本格式文件中的一部分,只保留其中的一段,文件较大需提取的内容较少度)}
(是大批量文件处理。在各自原文上删除,即各自的文件名不改名。或各自的文件名包含各自的原文名也可。
((大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。
((大批量文件提取)各自的文件名不改名。或各自的文件名包含各自的原文名也可。
└8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
xxxxxxxxxxx
yyyyyyyyyyyyyyyyyyyyyyyyyy
`第三`
┌─────────────────────────────────────────────────┐
|也就是说,很多个文件都有“ 第一: 第二: 第三:”的这种格式,在各自的文件上保存要的内容,删除不要 |
|的内容,各自的文件名不变。或各自的文件名包含各自的原文名也可。(大批量处理) |
└─────────────────────────────────────────────────┘
|
|
2010-4-9 21:37 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
『第
11 楼』:
把三个批处理中的
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 ]
|
批处理之家 http://bbs.bathome.net/forum-5-1.html |
|
2010-4-9 22:22 |
|
|
lqs623
贫困用户
积分 -3
发帖 30
注册 2007-8-13
状态 离线
|
|
2010-4-9 23:00 |
|