返回列表 发帖

[文件操作] 【已解决】求助批处理如何用adb logcat自动分段记录日志?

本帖最后由 银八 于 2024-11-16 23:04 编辑

Origin_MD_Data:JXU4MENDJXU2NjZGJXVGRjFBYWRiJTIwbG9nY2F0JXU2NjJGUEMldThDMDMldThCRDUldTVCODkldTUzNTMldTc2ODQldThCQjAldTVGNTUldTY1RTUldTVGRDcldTc2ODQldTU0N0QldTRFRTQldUZGMEMldTVCODMldTY3MDkldTRFMDAldTRFMkEldTcyNzkldTcwQjkldTY2MkYqKiV1NEUwMCV1NTQyRiV1NTJBOCV1NUMzMSV1NEUwRCV1NEYxQSV1NTA1QyV1NkI2MioqJXVGRjA4JXU5NjY0JXU5NzVFJTYwJTYwJTYwQ3RybCU2MCU2MCU2MCslNjAlNjAlNjBDJTYwJTYwJTYwJXVGRjBDJXU2MjE2JXU4MDA1JXU3MEI5JXU1MUZCJUQ3JTI5JXVGRjBDJXU0RjQ2JXU0RTAwJXU2QjIxJXU2MzAxJXU3RUVEJXU1OTJBJXU0RTQ1JXU3Njg0JXU2MjkzJXU1M0Q2JXU0RjFBJXU1QkZDJXU4MUY0JXU2NUU1JXU1RkQ3JXU2NTg3JXU0RUY2JXU4RkM3JXU1OTI3JXVGRjBDJXU2NUUwJXU2Q0Q1JXU3NTI4JXU4QkIwJXU0RThCJXU2NzJDJXU1NDhDTm90ZXBhZCsrJXU2MjUzJXU1RjAwJXUzMDAyJTBBJTBBJTYwJTYwJTYwYmF0Y2glMEFhZGIlMjBsb2djYXQlMjAlM0UlMjBEJTNBJTVDbG9nY2F0JTVDbG9nXyUyNXRpbWVOb3clMjUudHh0JTBBJTYwJTYwJTYwJTBBLS0tJTIwJTBBJTBBJXU3M0IwJXU1NzI4JXU2MEYzJXU3NTI4JXU0RTAwJXU0RTJBYmF0JXU1NDdEJXU0RUU0JXU1QjlFJXU3M0IwKioldTZCQ0YldTk2OTQzMCV1NTIwNiV1OTQ5RiV1NjI2NyV1ODg0QyV1NEUwMCV1NkIyMSV1NTA1QyV1NkI2MiV1NUU3NiV1NjI5MyV1NTNENiV1NjVCMCV1NjVFNSV1NUZENyoqJXU3Njg0JXU2NENEJXU0RjVDJXVGRjBDJXU1RTBDJXU2NzFCJXU1NDA0JXU0RjREJXU1OTI3JXU0RjZDJXU1RTJFJXU1RkQ5JTBB背景:adb logcat是PC调试安卓的记录日志的命令,它有一个特点是一启动就不会停止(除非Ctrl+C,或者点击×),但一次持续太久的抓取会导致日志文件过大,无法用记事本和Notepad++打开。
  1. adb logcat > D:\logcat\log_%timeNow%.txt
复制代码


现在想用一个bat命令实现每隔30分钟执行一次停止并抓取新日志的操作,希望各位大佬帮忙
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 2# flashercs

执行到第9行时,会一直执行这条命令。
正如背景中介绍的,它不会自己停止,所以无法执行后续timeout指令

TOP

回复 4# 77七


    感谢大佬,这个命令能够实现需要的功能了
  (有两个小问题,一是在缩放cmd窗口或者按下键盘的Win键时会无视计时立即重新开始生成新日志文件
     二是通过杀死adb.exe进程的方式做日志截断的话,可能影响当前其他adb命令的操作)

TOP

按时间不如按记录条数分割文件,如每10000条记录为一个日志:
flashercs 发表于 2024-11-16 17:29



    原来是用powershell实现的吗,赞!

TOP

用5楼的代码润色了一下,结果:
  1. @echo off&title 日志分割
  2. set lineLimit=100000
  3. set LogPath=F:\logcat\
  4. if not exist %LogPath% mkdir %LogPath%
  5. adb logcat -c&echo 历史日志已清空
  6. echo.&echo.
  7. echo 日志抓取中,保存路径为%LogPath%……
  8. adb logcat|powershell -c "function New-LogFileName{'%LogPath%log_'+(Get-Date -Format 'yyyyMMddHHmmss')+'.log';}while(1){$log=New-LogFileName;$input|select -First %lineLimit%|set-content -literal $log;}"
复制代码
可以使用啦

TOP

返回列表