Board logo

标题: [文本处理] [已解决]批处理怎样将文件中以时间戳开头的行,行首的时间戳,转换为真实时间? [打印本页]

作者: 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 | STATE:: == EN ==> WAITING  [8.657378]

1453366212 INFO QF : [I]ST    8.713 mat_log_interface.:23 | STATE:: == EN ==> WAITING  [8.713339]

1569567087 INFO QF : [I]ST   24.239 mat_log_interface.:28 | STATE:: <== EX == WAITING  [24.238520]

1569567087 INFO QF : [I]ST   24.239 mat_log_interface.:23 | STATE:: == EN ==> DOCKING  [24.238613]

1569567089 INFO QF : [I]ST   26.110 mat_log_interface.:28 | STATE:: <== EX == DOCKING  [26.109642]

1569567089 INFO QF : [I]ST   26.285 mat_log_interface.:23 | STATE:: == EN ==> ERROR [26.284834]

1569567095 INFO QF : [I]ST   32.573 mat_log_interface.:28 | STATE:: <== EX == ERROR [32.572964]

1569567095 INFO QF : [I]ST   32.574 mat_log_interface.:23 | STATE:: == EN ==> WAITING  [32.573566]

1569567095 INFO QF : [I]ST   32.598 mat_log_interface.:23 | STATE:: == EN ==> WAITING  [32.597786]

1569567110 INFO QF : [I]ST   47.633 mat_log_interface.:28 | STATE:: <== EX == WAITING  [47.632889]

1569567110 INFO QF : [I]ST   47.633 mat_log_interface.:23 | STATE:: == EN ==> CLEANING [47.632954]
作者: ivor    时间: 2019-9-29 15:19

处理单个文件实例:
  1. 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
  1. @set @i=0 /* & @echo off
  2. cscript -nologo -E:JScript %0 "tmp0"
  3. pause & exit
  4. */
  5. var fso = new ActiveXObject('Scripting.FileSystemObject');
  6. var fi = fso.OpenTextFile(WSH.Arguments.Item(0), 1).ReadAll();
  7. var text = fi.replace(/([\r?\n]\s*)(\d+)\s/g,
  8.      function($0,$1,$2) {
  9.             return($1+new Date(new Date(1970/1/1).setSeconds($2) ).toUTCString());
  10. });
  11. 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