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

[文本处理] 【已解决】批处理能否截取一短时间内的Log另存为新的Log?

[复制链接]
 楼主| 发表于 2020-11-26 09:33:22 | 显示全部楼层
回复 26# flashercs


    附件已上传 您再给看看编辑一下
发表于 2020-11-26 17:28:05 | 显示全部楼层
回复 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. }
复制代码
 楼主| 发表于 2020-11-27 01:29:40 | 显示全部楼层
回复 32# flashercs


    已采纳,万分感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 21:57 , Processed in 0.024173 second(s), 13 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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