[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] BAT批处理删除顺数指定行

本帖最后由 hlzj88 于 2014-5-25 23:06 编辑

看论坛高手们的回复等等,自愧不如,放这里是心有余悸的。但本着实用主义原则,把基本需求的bat做到复制能用的地步,放这里供需求者使用。
  1. @echo off&setlocal enabledelayedexpansion
  2. echo 例如你要保留第5行开始的内容,就输入数字5,然后回车。批量使用最好先熟悉一下功能
  3. set /p zd=---顺数数字---》
  4. echo 删除顺数指定行数的内容 文本不要有空行
  5. del 后悔.txt>nul 2>nul
  6. for /f "delims=" %%a in ('dir /b *.txt') do (
  7.   echo.>>后悔.txt&echo %%a>>后悔.txt
  8.   set/a p=0
  9.   for /f "delims=" %%i in (%%~nxa) do (
  10.     set/a p+=1
  11.     title 删除顺数!zd!行  正在处理%%a的第!p!行
  12.     if !p! GEQ !zd! (echo,%%i>>test.txt) else (echo,%%i>>后悔.txt)
  13.   )
  14. move /y test.txt %%~nxa>nul
  15. )
复制代码
嗯,假如你是需要前几行,修改if的条件就改变性质了。
目的,学习批处理

本帖最后由 hlzj88 于 2014-5-25 02:25 编辑

如果不需要前5行,就输入6。
输入0,会整理文本去掉空行。
目的,学习批处理

TOP

本帖最后由 hlzj88 于 2014-5-25 23:07 编辑

删除倒数指定行
  1. @echo off&setlocal enabledelayedexpansion
  2. echo 例如你要保留倒数5行前面的内容,就输入数字5,然后回车。批量使用最好先熟悉一下功能
  3. del 后悔.txt>nul 2>nul
  4. set /p zd=---倒数数字---》
  5. echo 删除倒数指定行的内容
  6. for /f "delims=" %%a in ('dir /b *.txt') do (
  7.    echo.>>后悔.txt&echo %%a>>后悔.txt
  8.    for /f "tokens=2 delims=:" %%a in ('find /c /v "" %%~nxa') do set/a result=%%a-!zd!
  9.    set/a p=0
  10.    for /f "delims=" %%i in (%%~nxa) do (
  11.       set /a p+=1
  12.       title 删除倒数 !zd! 行  正在处理 %%a
  13.       if !p! leq !result! (echo,%%i>>test.txt) else (echo,%%i>>后悔.txt)
  14.    )
  15. move /y test.txt %%~nxa>nul
  16. )
复制代码
目的,学习批处理

TOP

  1. 1
  2. 2
  3. ab
  4. on
  5. cde
  6. off
复制代码
你删除这个文件的前2行试试

TOP

嗯嗯 ,特例没考虑,的确有问题。想不明白如何改。
目的,学习批处理

TOP

第二个问题:
你没有测试过文件名包含空格的情况吧?

TOP

回复 5# hlzj88


这个教程里面有解决方法:
http://bbs.bathome.net/thread-13860-1-1.html

TOP

本帖最后由 hlzj88 于 2014-5-25 23:13 编辑

刚开机就来看了,恩,问题还有一大堆,是考虑不周全。琢磨之后来修改顶楼。

谢谢DAIC指出问题,看了推荐链接并修改了上面的echo,。但这个文件名空格,翻资料修改测试没成功。
太头疼。
明天上班,早睡了。后面再琢磨。
目的,学习批处理

TOP

返回列表