标题: [文本处理] BAT批处理删除顺数指定行 [打印本页]
作者: hlzj88 时间: 2014-5-25 02:06 标题: BAT批处理删除顺数指定行
本帖最后由 hlzj88 于 2014-5-25 23:06 编辑
看论坛高手们的回复等等,自愧不如,放这里是心有余悸的。但本着实用主义原则,把基本需求的bat做到复制能用的地步,放这里供需求者使用。- @echo off&setlocal enabledelayedexpansion
- echo 例如你要保留第5行开始的内容,就输入数字5,然后回车。批量使用最好先熟悉一下功能
- set /p zd=---顺数数字---》
- echo 删除顺数指定行数的内容 文本不要有空行
- del 后悔.txt>nul 2>nul
- for /f "delims=" %%a in ('dir /b *.txt') do (
- echo.>>后悔.txt&echo %%a>>后悔.txt
- set/a p=0
- for /f "delims=" %%i in (%%~nxa) do (
- set/a p+=1
- title 删除顺数!zd!行 正在处理%%a的第!p!行
- if !p! GEQ !zd! (echo,%%i>>test.txt) else (echo,%%i>>后悔.txt)
- )
- move /y test.txt %%~nxa>nul
- )
复制代码
嗯,假如你是需要前几行,修改if的条件就改变性质了。
作者: hlzj88 时间: 2014-5-25 02:24
本帖最后由 hlzj88 于 2014-5-25 02:25 编辑
如果不需要前5行,就输入6。
输入0,会整理文本去掉空行。
作者: hlzj88 时间: 2014-5-25 08:20
本帖最后由 hlzj88 于 2014-5-25 23:07 编辑
删除倒数指定行- @echo off&setlocal enabledelayedexpansion
- echo 例如你要保留倒数5行前面的内容,就输入数字5,然后回车。批量使用最好先熟悉一下功能
- del 后悔.txt>nul 2>nul
- set /p zd=---倒数数字---》
- echo 删除倒数指定行的内容
- for /f "delims=" %%a in ('dir /b *.txt') do (
- echo.>>后悔.txt&echo %%a>>后悔.txt
- for /f "tokens=2 delims=:" %%a in ('find /c /v "" %%~nxa') do set/a result=%%a-!zd!
- set/a p=0
- for /f "delims=" %%i in (%%~nxa) do (
- set /a p+=1
- title 删除倒数 !zd! 行 正在处理 %%a
- if !p! leq !result! (echo,%%i>>test.txt) else (echo,%%i>>后悔.txt)
- )
- move /y test.txt %%~nxa>nul
- )
复制代码
作者: DAIC 时间: 2014-5-25 09:20
复制代码
你删除这个文件的前2行试试
作者: hlzj88 时间: 2014-5-25 09:42
嗯嗯 ,特例没考虑,的确有问题。想不明白如何改。
作者: DAIC 时间: 2014-5-25 10:06
第二个问题:
你没有测试过文件名包含空格的情况吧?
作者: DAIC 时间: 2014-5-25 10:18
回复 5# hlzj88
这个教程里面有解决方法:
http://bbs.bathome.net/thread-13860-1-1.html
作者: hlzj88 时间: 2014-5-25 21:17
本帖最后由 hlzj88 于 2014-5-25 23:13 编辑
刚开机就来看了,恩,问题还有一大堆,是考虑不周全。琢磨之后来修改顶楼。
谢谢DAIC指出问题,看了推荐链接并修改了上面的echo,。但这个文件名空格,翻资料修改测试没成功。
太头疼。
明天上班,早睡了。后面再琢磨。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |