[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. cd /d "%~dp0"
  4. set "dtmBegin=00:31:37:501"
  5. set "dtmEnd=14:59:02:999"
  6. for %%A in ("*.log") do (
  7.   >"%%A.log" call :filter "%%A"
  8.   REM >"[%dtmBegin::=;%-%dtmEnd::=;%].%%A" call :filter "%%A"
  9. )
  10. endlocal
  11. pause
  12. exit /b
  13. :filter
  14. set flag=0
  15. for /f "usebackq tokens=1*" %%B in (%1) do (
  16.     set dtm=0%%B
  17.     set dtm=!dtm:~-12!
  18.     REM test the low boundary
  19.     if "!flag!"=="0" (
  20.       if "!dtm!" geq "%dtmBegin%" set flag=1
  21.     )
  22.     REM test the high boundary
  23.     if "!flag!"=="1" (
  24.       if "!dtm!" lss "!dtmEnd!" (
  25.         echo %%B %%C
  26.       ) else (
  27.         set flag=0
  28.         goto next
  29.       )
  30.     )
  31.   )
  32.   :next
  33.   exit /b
复制代码
微信:flashercs
QQ:49908356

TOP

回复 15# Batcher


    大佬 怎么调用呀

TOP

回复 14# w31575801

将7楼代码第4行中type "%%a"改为findstr /b "8: 9: 10: 11:" "%%a",初步筛选一下。
上面是举一个例子,表示筛选的是8~11点的数据,注意时间之间要有空格。这样效率应当高一点。

TOP

回复 14# w31575801
EmEditor文本编辑器好像能实现,编写一个宏文件,可能效率较高,家里电脑上没有,明天到单位上看看,很久以前写过宏文件,忘个差不多了,先要熟悉一下,试试吧。

TOP

回复 14# w31575801


可以考虑试试第三方命令行工具 sed.exe 或 gawk.exe
http://bcn.bathome.net/s/tool/index.html?key=sed
http://bcn.bathome.net/s/tool/index.html?key=gawk
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11# qixiaobin0715


    大佬有个问题就是当log日志太大的时候转换特别慢,有没有什么方法解决,比如引用notepad+去操作

TOP

回复 11# qixiaobin0715


    可以了谢谢大佬

TOP

本帖最后由 qixiaobin0715 于 2020-11-24 09:37 编辑

回复 8# w31575801

经过测试,我这里没问题啊。请不要直接选中代码复制,点击代码下方的“复制代码”,再粘贴。将bat文件另存为编码为ANSI的文件。

TOP

回复 10# w31575801
再试试

TOP

回复 9# qixiaobin0715


    还是找不到,我删掉空格就可以,大佬能设置个条件直接把空格改成下划线然后在操作截取另存吗,,最后加一个删除原始log只保留修改后的log

TOP

回复 8# w31575801

已修改,试试吧。

TOP

回复 7# qixiaobin0715


    大佬有个问题,就是当a.log名称中有空格的话提示找不到该log,怎么解决呀

TOP

本帖最后由 qixiaobin0715 于 2020-11-24 09:23 编辑

回复 6# w31575801
新文件名为源文件名前加字符#,这样通用一些。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in ("*.log") do (
  4.     (for /f "tokens=1,* delims= " %%i in ('type "%%a"') do (
  5.         set var=%%i
  6.         set var=!var::=!
  7.         if !var! geq 00101133 if !var! leq 100201145 echo %%i %%j
  8.     ))>"#%%a"
  9. )
  10. pause
复制代码

TOP

回复 5# qixiaobin0715


    如果目录下有a1,a2,a3,a4多个文件,可以批量提取出来为b1,b2,b3,b4这样的吗

TOP

a.log为源文件,b.log为新文件

TOP

返回列表