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

[文本处理] 如何提取变量与变量之间连续的行!

如何提取文本文件中连续的行!

原文件a.txt内容如下:
2008100122220333333001
2008100222220333333001
2008100322220333333001
2008100422220333333001
2008100522220333333001
2008100122220444444001
2008100222220444444001
2008100322220444444001
2008100422220444444001
2008100522220444444001

批处理代码如下:
@echo off
set var1=444444
set var2=20081002
set var3=20081004
findstr "%var2%.*%var1%" a.txt>b.txt

怎么用findstr 将A.TXT里面含有var1,
从var2开始到var3结束,这个时间段的行,输出到b.txt
上面这个代码没有加入 var3变量。

b.txt的内容应该如下:
2008100222220444444001
2008100322220444444001
2008100422220444444001

  1. @echo off
  2. for /l %%a in (2 1 4) do findstr "^2008100%%a.*444444" "a.txt">>b.txt
  3. start b.txt
复制代码
心绪平和,眼藏静谧。

TOP

原帖由 pusofalse 于 2008-10-16 14:10 发表
@echo off
for /l %%a in (2 1 4) do findstr "^2008100%%a.*444444" "a.txt">>b.txt
start b.txt


上面这个代码只能输出2-4的数据到,如果要把塞选范围从2-4扩展到2-24该怎么写,请指点!

[ 本帖最后由 heyoug 于 2008-10-16 20:26 编辑 ]

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set var1=444444
  3. set var2=20081002
  4. set var3=20081004
  5. for /f "delims=" %%a in ('findstr "%var1%" a.txt') do (
  6.    set str=%%a
  7.    if "!str:~0,8!"=="%var2%" set flag=a
  8.    if defined flag echo %%a
  9.    if "!str:~0,8!"=="%var3%" set "flag="
  10. )
  11. pause
复制代码
技术问题请到论坛发帖求助!

TOP

回复 3楼 的帖子

  1. @echo off
  2. findstr "^2008100[2-9].*444444 ^2008101.*444444 ^2008102[0-4].*444444" "a.txt">>b.txt
  3. start b.txt
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

楼主既然知道这么多批处理论坛,还是建议静下心来学习一下批处理教程吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表