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

admin 2026-08-16 19:09:57 世界杯最佳球员

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

查看: 27103|回复: 3

[文本处理]

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

[复制链接]

wh123wh123

wh123wh123

当前离线

积分430

电梯直达

1楼

发表于 2021-2-24 00:24:01

|

只看该作者

|倒序浏览

|阅读模式

系统日志在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

当前离线

积分4235

2楼

发表于 2021-2-24 09:46:13

|

只看该作者

@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复制代码

回复

举报

wh123wh123

wh123wh123

当前离线

积分430

3楼

楼主|

发表于 2021-2-24 12:10:11

|

只看该作者

本帖最后由 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,不显示出来咋办呢

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

开机----

开机----关机

....

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

回复

举报

wh123wh123

wh123wh123

当前离线

积分430

4楼

楼主|

发表于 2021-2-24 12:39:45

|

只看该作者

本帖最后由 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

回复

举报