🎊 [文本处理]批处理获取电脑开关机时间的全部提取

[文本处理]批处理获取电脑开关机时间的全部提取

wh123wh123

发短消息

加为好友

wh123wh123

当前离线

UID7761 帖子211 精华0 积分424 PB424 技术0 捐助0 阅读权限20 在线时间184 小时 注册时间2008-12-19 最后登录2025-6-17

六级士官

帖子211 积分424 技术0 捐助0 注册时间2008-12-19

1楼

跳转到 »

倒序看帖

打印

字体大小: tT

发表于 2021-2-24 00:24

| 只看该作者

[文本处理] 批处理获取电脑开关机时间的全部提取

系统日志在d:\log.txt文件里,格式类似如下:请问使用批处理如何提取关键词“6005”和“6006”上面对应的时间?并且逐行回显和导出到文本DD.txt里,例如:

开机2021-02-23T16:44:42.139 ----关机2021-02-23T21:41:35.000

......

d:\log.txt内容:

......

Event[163]:

Log Name: System

Source: Microsoft-Windows-Winlogon

Date: 2021-02-22T16:44:41.702

Event ID: 7002

Task: N/A

Level: 信息

Opcode: 信息

Keyword: N/A

User: S-1-5-18

User Name: NT AUTHORITY\SYSTEM

Computer: 555555

Description:

客户体验改善计划的用户注销通知

Event[164]:

Log Name: System

Source: EventLog

Date: 2021-02-22T16:44:42.000

Event ID: 6006

Task: N/A

Level: 信息

Opcode: N/A

Keyword: 经典

User: N/A

User Name: N/A

Computer: 555555

Description:

事件日志服务已停止。

Event[153]:

Log Name: System

Source: EventLog

Date: 2021-02-22T21:41:35.000

Event ID: 6005

Task: N/A

Level: 信息

Opcode: N/A

Keyword: 经典

User: N/A

User Name: N/A

Computer: 555555

Description:

事件日志服务已启动。

Event[154]:

.....

收藏

分享

qixiaobin0715

发短消息

加为好友

qixiaobin0715

当前离线

UID74702 帖子2877 精华0 积分4232 PB2909 技术441 捐助0 阅读权限90 在线时间5030 小时 注册时间2016-2-20 最后登录2024-12-31

大校

帖子2877 积分4232 技术441 捐助0 注册时间2016-2-20

2楼

发表于 2021-2-24 09:46

| 只看该作者

@echo off

setlocal enabledelayedexpansion

(for /f "delims=" %%a in ('findstr "Date: ID:" d:\log.txt') do (

set "str1=%%a"

if not "!str1:6006=!"=="!str1!" (

set "var=开机!str2!

) else if not "!str1:6005=!"=="!str1!" (

echo !var! ----关机!str2!

)

set "str2=%%a"

set "str2=!str2:*Date=!"

))>d:\DD.txt

pause复制代码

TOP

wh123wh123

发短消息

加为好友

wh123wh123

当前离线

UID7761 帖子211 精华0 积分424 PB424 技术0 捐助0 阅读权限20 在线时间184 小时 注册时间2008-12-19 最后登录2025-6-17

六级士官

帖子211 积分424 技术0 捐助0 注册时间2008-12-19

3楼

发表于 2021-2-24 12:10

| 只看该作者

本帖最后由 wh123wh123 于 2021-2-24 12:13 编辑

回复 2# qixiaobin0715

您好,老师,为什么dos窗口不显示出来?另外6005是开机6006是关机吧?我修改为

@echo off

setlocal enabledelayedexpansion

(for /f "delims=" %%a in ('findstr "Date: ID:" d:\log.txt') do (

set "str1=%%a"

if not "!str1:6005=!"=="!str1!" (

set "var=本次开机!str2!

) else if not "!str1:6006=!"=="!str1!" (

echo !var! ----上次关机!str2!

)

set "str2=%%a"

set "str2=!str2:*Date=!"

))>d:\DD.txt

pause,不显示出来咋办呢

能不能按这样的格式处理?

开机----

开机----关机

....

感觉这样才合理,因为每次的开机时间都比关机时间早

TOP

wh123wh123

发短消息

加为好友

wh123wh123

当前离线

UID7761 帖子211 精华0 积分424 PB424 技术0 捐助0 阅读权限20 在线时间184 小时 注册时间2008-12-19 最后登录2025-6-17

六级士官

帖子211 积分424 技术0 捐助0 注册时间2008-12-19

4楼

发表于 2021-2-24 12:39

| 只看该作者

本帖最后由 wh123wh123 于 2021-2-24 13:04 编辑

::提取日志全部开关机记录

(for /f "delims=" %%a in ('findstr "Date: ID:" d:\log.txt') do (

set "str1=%%a"

if not "!str1:6006=!"=="!str1!" (

set "var=关机!str2!

) else if not "!str1:6005=!"=="!str1!" (

echo 开机!str2! ---- !var!

)

set "str2=%%a"

set "str2=!str2:*Date=!"

))>d:\DD.txt

for /f "tokens=* delims=" %%a in (d:\DD.txt) do echo %%a

::start d:\DD.txt

pause

这样为什么输出到d:\DD.txt里内容会多出来无用字符2611?本来是

开机: 2021-02-24T11:21:52.000 ----

开机: 2021-02-23T21:41:35.000 ---- 关机: 2021-02-24T03:14:50.000

开机: 2021-02-23T12:54:34.000 ---- 关机: 2021-02-23T16:44:42.000

可是输出却是

开机: 2021-02-24T11:21:52.000 ---- 2611

开机: 2021-02-23T21:41:35.000 ---- 关机: 2021-02-24T03:14:50.000

开机: 2021-02-23T12:54:34.000 ---- 关机: 2021-02-23T16:44:42.000

TOP

🎯 相关推荐

今天你喝水了吗?浅谈透析患者容量控制
365体育ribo88

今天你喝水了吗?浅谈透析患者容量控制

📅 07-10 👀 3004
电脑c盘满了怎么清理,这四种方法超有用
mobile28365正规网址

电脑c盘满了怎么清理,这四种方法超有用

📅 07-16 👀 9757
宝可梦系列
mobile28365正规网址

宝可梦系列

📅 07-28 👀 6981
《鲜肉老师》分集剧情介绍(1-24全集)大结局
mobile28365正规网址

《鲜肉老师》分集剧情介绍(1-24全集)大结局

📅 07-29 👀 5799
胎教电影系列:适合孕妈妈看的十部电影,孕期不无聊!
骈偶的意思
365体育ribo88

骈偶的意思

📅 07-22 👀 3640
[休闲玩法]梦幻西游摇钱树攻略,最新最全,附带给力奖励图【攻略达人】
香港座机怎么打回内地(香港固话如何拨打内地)
根沐 飞机杯使用感受(外壳|清洗|强度|设计)
beat365老版本

根沐 飞机杯使用感受(外壳|清洗|强度|设计)

📅 06-30 👀 2863