找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 12217|回复: 7

[文本处理] [已解决]求助批处理如何提取文本内指定的 日期时段

[复制链接]
发表于 2024-10-3 19:41:11 | 显示全部楼层 |阅读模式
a.txt  文本内容
2024/10/01 17:01,19972.00,19986.00,19968.25,19978.00,764,
2024/10/01 17:02,19978.75,19981.75,19968.25,19968.25,401,
2024/10/01 17:03,19969.25,19969.75,19945.25,19952.50,861,
2024/10/01 17:04,19953.50,19955.00,19949.25,19950.25,287,
.
.

2024/10/02 15:55,20066.00,20068.75,20066.00,20067.00,87,
2024/10/02 15:56,20067.00,20069.00,20066.50,20067.50,178,
2024/10/02 15:57,20067.50,20068.75,20065.25,20067.75,153,
2024/10/02 15:58,20067.25,20068.00,20066.00,20066.00,80,
2024/10/02 15:59,20065.75,20065.75,20060.25,20060.75,251,
2024/10/02 16:00,20060.50,20060.50,20056.25,20059.25,348,
文本中 第一列为 日期 时间,
每一分钟一行
起始时间为17:01
终止时间为次日 16:00

提取至b.txt
谢谢

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-10-3 21:02:37 | 显示全部楼层
提取什么?没说清楚
 楼主| 发表于 2024-10-3 21:22:13 | 显示全部楼层
回复 2# 77七
提取指定日期   起始时间为17:01 至次日 16:00  的行
发表于 2024-10-3 21:34:27 | 显示全部楼层
17:01 至次日 16:00  的行

这不就是全部的文件内容么?
发表于 2024-10-3 21:52:45 | 显示全部楼层
  1. @echo off
  2. set d1=2024/10/01
  3. cd /d "%~dp0"
  4. for /f %%a in ('powershell -c "Get-Date (Get-Date '%d1%').AddDays(1) -uformat "%%Y/%%m/%%d""') do (
  5.         set d2=%%a
  6. )
  7. (for /f "tokens=1* delims=," %%a in ('findstr /b "%d1% %d2%" "a.txt"') do (
  8.         if "%%a" geq "%d1% 17:01" (
  9.                 if "%%a" leq "%d2% 16:00" (
  10.                         echo %%a,%%b
  11.                 )
  12.         )
  13. )) > "b.txt"
  14. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
KLL + 1 乐于助人

查看全部评分

 楼主| 发表于 2024-10-3 22:58:11 | 显示全部楼层
已运行测试    正确

感谢协助   谢谢您
发表于 2024-10-4 00:42:13 | 显示全部楼层
回复 1# KLL

  1. @echo off &setlocal &set "g=1"
  2. (for /f "tokens=1-2 delims=, " %%a in ('sort a.txt') do if defined g (
  3.         if "%%b"=="17:01" (set "gg=1") else if "%%b"=="16:00" set "g="
  4.         if defined gg echo,%%a %%b
  5. ))>b.txt
  6. endlocal&pause&exit/b
复制代码
发表于 2024-10-8 15:08:52 | 显示全部楼层
根据楼主的描述,要提取的数据总共23个小时,每分钟一行数据,也即是1380行,根据这个思路,代码也可这样写:
  1. @echo off
  2. set "StartingTime=2024/10/01 17:01"
  3. setlocal enabledelayedexpansion
  4. (for /f "tokens=1* delims=," %%i in (a.txt) do (
  5.     if "%%i"=="%StartingTime%" (
  6.         set n=0
  7.         echo,%%i,%%j
  8.     ) else if defined n (
  9.         set /a n+=1
  10.         if !n! equ 1380 set n=
  11.         echo,%%i,%%j
  12.     )
  13. ))>b.txt
  14. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 18:18 , Processed in 0.021590 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表