标题: [文本处理] [已解决]批处理按条件删除文本 [打印本页]
作者: Wingl83 时间: 2009-7-19 11:23 标题: [已解决]批处理按条件删除文本
文本的行数不一,一般保留前三行,但若第四行不以“[”开头,则保留前六行。(即若第四行以“[”开头就只保留前三行;若第四行以其他字符开头,则保留前六行)其他的删除,并覆盖原文件。
[ 本帖最后由 Wingl83 于 2009-7-19 13:38 编辑 ]
作者: rat 时间: 2009-7-19 11:58
- @echo off & setlocal enabledelayedexpansion
- set f=a.txt
- for /f "eol= tokens=1,2* delims=:" %%a in ('findstr /n .* %f%') do (
- if %%a==1 (echo.%%b>%f%) else (
- if %%a lss 4 (echo.%%b>>%f%) else (
- if %%a==4 (
-
- set s=%%b
- set s=!s:~,1!
- if !s!==[ (goto :eof) else echo.%%b>>%f%
- ) else (
- if %%a gtr 6 (goto :eof) else echo.%%b>>%f%
- )
- )
- )
- )
复制代码
作者: yslyxqysl 时间: 2009-7-19 12:02
if %%a==1 (echo.%%b>%f%) else (
if %%a lss 4 (echo.%%b>>%f%) else (
似乎直接cd.>%f%就得了
作者: tireless 时间: 2009-7-19 13:28
没有处理空行:- @echo off
- set file="a.txt"
- set /a n=0,m=0
- for /f "usebackq eol= delims=" %%a in (%file%) do (
- set /a n+=1,"1/(4-n)" 2>nul || (
- set /a n=1,m+=1,"1/(2-m)" 2>nul || exit /b
- for /f "delims=[ tokens=*" %%i in ("%%a") do if "%%i" neq "%%a" exit /b
- )
- if defined file set file=>%file%
- echo;%%a>>%file%
- )
复制代码
[ 本帖最后由 tireless 于 2009-7-19 13:31 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |