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

[文本处理] 批处理如何提取指定行之后的内容到新文本?

原文本如下
1994/11/25        15:30:00        18650        18700        18650        18690        64        0        18675        0.50
1994/11/28        15:30:00        18320        18500        18320        18465        111        0        18410        0.50
1994/11/29        15:30:00        18090        18090        18090        18090        22        0        18090        0.50
1994/11/30        15:30:00        18450        18450        18450        18450        12        0        18450        0.50
1994/12/01        15:30:00        18600        18650        18400        18450        133        0        18525        0.50
1994/12/02        15:30:00        18300        18380        18200        18380        141        0        18290        0.50
1994/12/05        15:30:00        18300        18300        18220        18300        84        0        18260        0.50
1994/12/06        15:30:00        18200        18280        18100        18250        120        0        18190        0.50
1994/12/07        15:30:00        18450        18490        18400        18480        131        0        18445        0.50
1994/12/08        15:30:00        18355        18400        18355        18360        26        0        18378        0.50
1994/12/09        15:30:00        18410        18420        18250        18350        138        0        18335        0.50
我想提取1994/11/30之后的内容到新文本,格式如下
1994/12/01        15:30:00        18600        18650        18400        18450        133        0        18525        0.50
1994/12/02        15:30:00        18300        18380        18200        18380        141        0        18290        0.50
1994/12/05        15:30:00        18300        18300        18220        18300        84        0        18260        0.50
1994/12/06        15:30:00        18200        18280        18100        18250        120        0        18190        0.50
1994/12/07        15:30:00        18450        18490        18400        18480        131        0        18445        0.50
1994/12/08        15:30:00        18355        18400        18355        18360        26        0        18378        0.50
1994/12/09        15:30:00        18410        18420        18250        18350        138        0        18335        0.50

这样吗?
  1. @echo off
  2. (for /f "delims=" %%a in (a.txt) do (
  3.   for /f "delims= " %%b in ("%%a") do (
  4.     if defined flag echo %%a
  5.     if "%%b"=="1994/11/30" set flag=1
  6.   )
  7. ))>b.txt
复制代码

TOP

如果我是要提取1994/11/30和1994/12/06之间的内容呢?就是1994/11/30之后的行到1994/12/06之前的行

TOP

回复 3# wjx515

方法告诉你了,你就不会变通一下?
看球去咯。。。
  1. @echo off
  2. (for /f "delims=" %%a in (a.txt) do (
  3.   for /f "delims= " %%b in ("%%a") do (
  4.     if "%%b"=="1994/12/06" set flag=
  5.     if defined flag echo %%a
  6.     if "%%b"=="1994/11/30" set flag=1
  7.   )
  8. ))>b.txt
复制代码

TOP

个人认为这个方法已经是最快的了,占位寻求更好的。
  1. @Echo Off
  2. Set "StartDate=1994/11/30" // 开始日期
  3. Set "EndDate=1994/12/30" // 结束日期
  4. For /F "tokens=1-3,* delims=/ " %%A In (1.txt) Do (
  5. If %%A%%B%%C Geq %StartDate:/=% If %%A%%B%%C Leq %EndDate:/=% Echo %%A/%%B/%%C %%D
  6. )
  7. Pause>Nul
复制代码

TOP

返回列表