|
namelessone
新手上路
积分 7
发帖 6
注册 2009-8-20
状态 离线
|
『楼 主』:
如何删除文本文件内连续多行内容?
我想检索log1.txt的内容,如果发现02则删除02及之后的连续三行,试了一下for遍历,在for和if中的set命令看来无法生效,试过把变量名加上%或!,都不起作用。以下是脚本,大家帮忙看看应该怎么标记变量名。
@echo off&setlocal enabledelayedexpansion
set/a num=0
(for /f "tokens=1,* delims=:" %%a in ('findstr /n .* log1.TXT') do (
set str=%%b
if num equ 0 (
if "!str:~0,2!"=="02" (set/a num=3
) else echo/%%b
)else (set/a num-=1)
) )>log2.txt 另外 这是只删一行的脚本,没有问题:
@echo off&setlocal enabledelayedexpansion
(for /f "tokens=1,* delims=:" %%a in ('findstr /n .* log1.TXT') do (
set str=%%b
if "!str:~0,2!"=="02" ( rem
) else echo/%%b
))>log2.TXT log1.txt中的内容类似于:
01
02
03
04
05
06
需要格式化为:
01
06
麻烦大家给些建议 谢谢。
[ Last edited by namelessone on 2009-9-3 at 02:32 ]
|
|
2009-9-3 02:27 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
|
2009-9-3 03:01 |
|
|
namelessone
新手上路
积分 7
发帖 6
注册 2009-8-20
状态 离线
|
『第
3 楼』:
不太明白,返回行号我也需要把02这行的行号set成一个标记变量吧,然后把标记变量依次减一进行连续删除,那跟我现在的方法几乎一样啊。我就是没有试出来怎么在for+if语句里使用set/a。
或者是你说的行号方法能够不使用set,一次性直接运算删除多行?
|
|
2009-9-3 03:43 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
『第
4 楼』:
Quote: | Originally posted by namelessone at 2009-9-3 03:43:
不太明白,返回行号我也需要把02这行的行号set成一个标记变量吧,然后把标记变量依次减一进行连续删除,那跟我现在的方法几乎一样啊。我就是没 ... |
|
不管用什么方法,不用if和set /a是不可能的.除非是获取固定行...
按照你在一楼的思路,可以这样写:
@echo off&setlocal enabledelayedexpansion
set num=0
for /f "tokens=1,* delims=:" %%a in ('findstr /n .* log1.TXT') do (
set str=%%b
if "!str:~0,2!"=="02" set num=1
if !num! neq 0 set /a num+=1
if "!num!" == "0" >>log2.txt echo !str!
if !num! gtr 5 >>log2.txt echo !str!
) 好象我写的有点麻烦......
[ Last edited by Hanyeguxing on 2009-9-3 at 04:50 ]
|
批处理之家 http://bbs.bathome.net/forum-5-1.html |
|
2009-9-3 04:07 |
|
|
tireless
银牌会员
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第
5 楼』:
@echo off
setlocal enabledelayedexpansion
set n=0
(for /f "tokens=1,* delims=:" %%a in ('findstr /n .* log1.txt') do (
if !n!==0 (
set var=%%b
if "!var:~,2!"=="02" (set n=3) else echo;%%b
) else set /a n-=1
))>log2.txt
|
|
2009-9-3 04:50 |
|
|
namelessone
新手上路
积分 7
发帖 6
注册 2009-8-20
状态 离线
|
『第
6 楼』:
谢谢各位 可以用了 不过暂时还搞不清楚为什么我写的set /a num-=1无法生效
|
|
2009-9-3 06:21 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
|
2009-9-3 06:50 |
|