标题: [文本处理] [已解决]批处理怎样将文件中以时间戳开头的行,行首的时间戳,转换为真实时间? [打印本页]
作者: dajidali 时间: 2019-9-29 13:07 标题: [已解决]批处理怎样将文件中以时间戳开头的行,行首的时间戳,转换为真实时间?
向大神求助:
将文件中,以时间戳开头的行,行首的时间戳,转换为真实时间,谢谢!
比如:
1569587291 变成 Fri Sep 27 12:28:11 UTC 2019(时间格式不限)
文件名:tmp0
文件内容:
查看扫地机log中的STATE变化......
____/tmp/logmain_log_file000.log.last____
1453366212 INFO QF : [I]ST 8.657 mat_log_interface.:23 | [1;32mSTATE:: == EN ==> WAITING [8.657378][0m
1453366212 INFO QF : [I]ST 8.713 mat_log_interface.:23 | [1;32mSTATE:: == EN ==> WAITING [8.713339][0m
1569567087 INFO QF : [I]ST 24.239 mat_log_interface.:28 | [1;33mSTATE:: <== EX == WAITING [24.238520][0m
1569567087 INFO QF : [I]ST 24.239 mat_log_interface.:23 | [1;32mSTATE:: == EN ==> DOCKING [24.238613][0m
1569567089 INFO QF : [I]ST 26.110 mat_log_interface.:28 | [1;33mSTATE:: <== EX == DOCKING [26.109642][0m
1569567089 INFO QF : [I]ST 26.285 mat_log_interface.:23 | [1;32mSTATE:: == EN ==> ERROR [26.284834][0m
1569567095 INFO QF : [I]ST 32.573 mat_log_interface.:28 | [1;33mSTATE:: <== EX == ERROR [32.572964][0m
1569567095 INFO QF : [I]ST 32.574 mat_log_interface.:23 | [1;32mSTATE:: == EN ==> WAITING [32.573566][0m
1569567095 INFO QF : [I]ST 32.598 mat_log_interface.:23 | [1;32mSTATE:: == EN ==> WAITING [32.597786][0m
1569567110 INFO QF : [I]ST 47.633 mat_log_interface.:28 | [1;33mSTATE:: <== EX == WAITING [47.632889][0m
1569567110 INFO QF : [I]ST 47.633 mat_log_interface.:23 | [1;32mSTATE:: == EN ==> CLEANING [47.632954][0m
作者: ivor 时间: 2019-9-29 15:19
处理单个文件实例:- gc tmp0 | %{[Regex]::Replace($_,'^[0-9]{10}',{param($v) (Get-Date 01.01.1970)+([System.TimeSpan]::fromseconds($v.Value))})}
复制代码
作者: dajidali 时间: 2019-9-29 19:22
回复 2# ivor
首先十分感谢这位两位大神能帮忙回复。
我新建了一个1.bat文件,在空文件中粘贴了您的代码,并保存文件;把 1.bat 和 tmp0 放在一个目录里面,执行 1.bat 之后,发现 tmp0 没有变化。
请问您,我的操作有什么错误。
作者: ivor 时间: 2019-9-29 20:20
回复 5# dajidali
这是powershell
作者: terse 时间: 2019-9-29 20:23
上面的是POWERSHELL- @set @i=0 /* & @echo off
- cscript -nologo -E:JScript %0 "tmp0"
- pause & exit
- */
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- var fi = fso.OpenTextFile(WSH.Arguments.Item(0), 1).ReadAll();
- var text = fi.replace(/([\r?\n]\s*)(\d+)\s/g,
- function($0,$1,$2) {
- return($1+new Date(new Date(1970/1/1).setSeconds($2) ).toUTCString());
- });
- fso.OpenTextFile(WSH.Arguments.Item(0), 2, true).Write(text);
复制代码
作者: dajidali 时间: 2019-9-29 21:02
回复 6# ivor
您好,我需要能写成 .bat 文件的代码;因为 tmp0 是一个 bat文件生产的,我需要把 这段代码加进去。
作者: dajidali 时间: 2019-9-29 21:18
回复 7# terse
多谢 大神相助,用您的这个,一下就成功了!
感谢,所欲回复的大神,再次感谢!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |