标题: [文本处理] [已解决]求BAT代码修改实现条件同时满足 [打印本页]
作者: meiszp 时间: 2019-1-14 20:48 标题: [已解决]求BAT代码修改实现条件同时满足
本帖最后由 meiszp 于 2019-1-21 20:13 编辑
学习了下面的代码
先使用findstr给每行添加行号,然后分割,提取含有“问题”的行号,赋值给n,第二个循环,还是先添加行号,当满足“”行号=含“问题”行号+5“时,输出此行。
希望修改成m<%%a<n,满足行号大于含“问题”行号,且小于含“问题”行号+5,这样就可以输出含“问题”行及之后5的行。
不知道同时满足两个条件该怎么表达。- @Echo Off&Setlocal Enabledelayedexpansion
- For /f "tokens=1* delims=:" %%i in ('Type a.txt^|Findstr /n "问题"') do (
- Set m=&Set /a m=%%i
- Set n=&Set /a n=%%i+5
- Echo %%j>>b.txt
- For /f "tokens=1* delims=:" %%a in ('Type a.txt^|Findstr /n "."') do (If %%a==!n! Echo %%b>>b.txt)
- )
- Pause
复制代码
作者: Batcher 时间: 2019-1-14 22:14
- @echo off
- setlocal enabledelayedexpansion
- (for /f "tokens=1* delims=:" %%i in ('type a.txt^|findstr /n "问题"') do (
- set m=%%i
- set /a n=%%i+5
- echo,%%j
- for /f "tokens=1* delims=:" %%a in ('type a.txt^|findstr /n "."') do (
- if %%a gtr !m! (
- if %%a leq !n! (
- echo,%%b
- )
- )
- )
- ))>b.txt
复制代码
作者: meiszp 时间: 2019-1-16 20:54
谢谢,完美实现。如果要改成m<%%a<n不输出,其他情况输出,即删除m行到n行,该怎么表达呢?谢谢!
作者: Batcher 时间: 2019-1-16 21:01
回复 3# meiszp - @echo off
- setlocal enabledelayedexpansion
- (for /f "tokens=1* delims=:" %%i in ('type a.txt^|findstr /n "问题"') do (
- set m=%%i
- set /a n=%%i+5
- echo,%%j
- for /f "tokens=1* delims=:" %%a in ('type a.txt^|findstr /n "."') do (
- if %%a leq !m! (
- echo,%%b
- ) else if %%a gtr !n! (
- echo,%%b
- )
- )
- ))>b.txt
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |