找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25548|回复: 6

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

[复制链接]
发表于 2019-9-29 13:07:24 | 显示全部楼层 |阅读模式
向大神求助:
将文件中,以时间戳开头的行,行首的时间戳,转换为真实时间,谢谢!


比如:
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]

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2019-9-29 15:19:33 | 显示全部楼层
处理单个文件实例:
  1. gc tmp0 | %{[Regex]::Replace($_,'^[0-9]{10}',{param($v) (Get-Date 01.01.1970)+([System.TimeSpan]::fromseconds($v.Value))})}
复制代码
 楼主| 发表于 2019-9-29 19:22:29 | 显示全部楼层
回复 2# ivor

首先十分感谢这位两位大神能帮忙回复。

我新建了一个1.bat文件,在空文件中粘贴了您的代码,并保存文件;把 1.bat 和 tmp0 放在一个目录里面,执行 1.bat 之后,发现  tmp0  没有变化。

请问您,我的操作有什么错误。
发表于 2019-9-29 20:20:20 | 显示全部楼层
回复 5# dajidali


    这是powershell
发表于 2019-9-29 20:23:53 | 显示全部楼层
上面的是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);
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2019-9-29 21:02:23 | 显示全部楼层
回复 6# ivor


   您好,我需要能写成 .bat 文件的代码;因为 tmp0 是一个 bat文件生产的,我需要把 这段代码加进去。
 楼主| 发表于 2019-9-29 21:18:44 | 显示全部楼层
回复 7# terse

多谢 大神相助,用您的这个,一下就成功了!
感谢,所欲回复的大神,再次感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 10:20 , Processed in 0.017492 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表