[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. cd /d "%~dp0"
  4. set "dtmBegin=09:31:37:501"
  5. set "dtmEnd=14:59:02:999"
  6. set "file=~%random%~"
  7. for %%A in ("*.log") do (
  8.   >"%file%" call :filter "%%A"
  9.   move /y "%file%" "%%A"
  10.   REM >"[%dtmBegin::=;%-%dtmEnd::=;%].%%A" call :filter "%%A"
  11. )
  12. endlocal
  13. pause
  14. exit /b
  15. :filter
  16. set flag=0
  17. for /f "usebackq tokens=1*" %%B in (%1) do (
  18.     REM test the low boundary
  19.     if "!flag!"=="0" (
  20.       if "%%B" geq "%dtmBegin%" (
  21.           if "%%B" lss "%dtmEnd%" (
  22.             echo %%B %%C
  23.             set flag=1
  24.         ) else (
  25.           goto next
  26.         )
  27.       )
  28.     ) else (
  29.     REM test the high boundary
  30.       if "%%B" lss "%dtmEnd%" (
  31.         echo %%B %%C
  32.       ) else (
  33.         set flag=0
  34.         goto next
  35.       )
  36.     )
  37.   )
  38.   :next
  39.   exit /b
复制代码
回复 22# w31575801
微信:flashercs
QQ:49908356

TOP

回复 31# w31575801


    log中还有些行开头不是时间格式,里面还有叹号!
  1. <#*,:&cls
  2. @echo off
  3. pushd "%~dp0"
  4. powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 | Out-String ))) "
  5. popd
  6. pause
  7. exit /b
  8. #>
  9. # 起始时间
  10. $dtmBegin = "02:31:37.501"
  11. # 终止时间
  12. $dtmEnd = "03:42:00.140"
  13. $logglob = "*.log"
  14. $dtmLength = $dtmBegin.Length
  15. $dtmFormat = "[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]"
  16. $buffer = 65536
  17. # utf8-nobom
  18. $encoding = New-Object System.Text.UTF8Encoding -ArgumentList @($false)
  19. foreach ($logfile in (Convert-Path -Path $logglob | Where-Object { Test-Path -LiteralPath $_ -PathType Leaf })) {
  20.   Write-Host $logfile -ForegroundColor Green
  21.   try {
  22.     $stream1 = New-Object System.IO.FileStream -ArgumentList @($logfile, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read, [System.IO.FileShare]::ReadWrite, $buffer)
  23.     $stream2 = New-Object System.IO.FileStream -ArgumentList @($logfile, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Write, [System.IO.FileShare]::Read, $buffer)
  24.     $sr = New-Object System.IO.StreamReader -ArgumentList @($stream1, $encoding, $true, $buffer)
  25.     $sw = New-Object System.IO.StreamWriter -ArgumentList @($stream2, $encoding, $buffer)
  26.     $flag = $false
  27.     while (!$sr.EndOfStream) {
  28.       $strLine = $sr.ReadLine()
  29.       $dtmStr = $strLine.Substring(0, [Math]::Min($dtmLength, $strLine.Length))
  30.       if ($dtmStr -notlike $dtmFormat) {
  31.         $sw.WriteLine($strLine)
  32.         continue
  33.       }
  34.       if (!$flag) {
  35.         if ($dtmStr -ge $dtmBegin) {
  36.           if ($dtmStr -lt $dtmEnd) {
  37.             $sw.WriteLine($strLine)
  38.             $flag = $true
  39.           } else {
  40.             break
  41.           }
  42.         }
  43.       } else {
  44.         if ($dtmStr -lt $dtmEnd) {
  45.           $sw.WriteLine($strLine)
  46.         } else {
  47.           $flag = $false
  48.           break
  49.         }
  50.       }
  51.     }
  52.     $sw.Flush()
  53.     $stream2.SetLength($stream2.Position)
  54.   } catch {
  55.     $_ | Write-Host -ForegroundColor Red
  56.   } finally {
  57.     if ($sr) {
  58.       $sr.Dispose()
  59.     }
  60.     if ($sw) {
  61.       $sw.Dispose()
  62.     }
  63.     if ($stream1) {
  64.       $stream1.Dispose()
  65.     }
  66.     if ($stream2) {
  67.       $stream2.Dispose()
  68.     }
  69.   }
  70. }
复制代码
微信:flashercs
QQ:49908356

TOP

返回列表