找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 16090|回复: 3

[文本处理] [已解决]批处理按条件删除文本

[复制链接]
发表于 2009-7-19 11:23:05 | 显示全部楼层 |阅读模式
文本的行数不一,一般保留前三行,但若第四行不以“[”开头,则保留前六行。(即若第四行以“[”开头就只保留前三行;若第四行以其他字符开头,则保留前六行)其他的删除,并覆盖原文件。

[ 本帖最后由 Wingl83 于 2009-7-19 13:38 编辑 ]

评分

参与人数 1PB +2 收起 理由
keen + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2009-7-19 11:58:59 | 显示全部楼层
  1. @echo off & setlocal enabledelayedexpansion
  2. set f=a.txt
  3. for /f "eol= tokens=1,2* delims=:" %%a in ('findstr /n .* %f%') do (
  4.         if %%a==1 (echo.%%b>%f%) else (
  5.                 if %%a lss 4 (echo.%%b>>%f%) else (
  6.                         if %%a==4 (
  7.                                
  8.                                 set s=%%b
  9.                                 set s=!s:~,1!
  10.                                 if !s!==[ (goto :eof) else echo.%%b>>%f%
  11.                         ) else (
  12.                                 if %%a gtr 6 (goto :eof) else echo.%%b>>%f%
  13.                         )
  14.                 )
  15.         )
  16. )
复制代码
发表于 2009-7-19 12:02:18 | 显示全部楼层
        if %%a==1 (echo.%%b>%f%) else (
                if %%a lss 4 (echo.%%b>>%f%) else (

似乎直接cd.>%f%就得了
发表于 2009-7-19 13:28:30 | 显示全部楼层
没有处理空行:
  1. @echo off
  2. set file="a.txt"
  3. set /a n=0,m=0
  4. for /f "usebackq eol= delims=" %%a in (%file%) do (
  5.   set /a n+=1,"1/(4-n)" 2>nul || (
  6.     set /a n=1,m+=1,"1/(2-m)" 2>nul || exit /b
  7.     for /f "delims=[ tokens=*" %%i in ("%%a") do if "%%i" neq "%%a" exit /b
  8.   )
  9.   if defined file set file=>%file%
  10.   echo;%%a>>%file%
  11. )
复制代码

[ 本帖最后由 tireless 于 2009-7-19 13:31 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 03:37 , Processed in 0.024275 second(s), 10 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表