[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何计算2个字段之间总时间

本帖最后由 娜美 于 2022-1-16 08:46 编辑

需要计算出下面字段之间执行时间   即计算出从 "企业" 到 "退出当前" 字段之间的时间过程   需用另一种时间格式方法存储显示
似乎用  "
企业  名称:"  作为字符串字段也可以


Thank you


THANKS

用awk计算   效率会不会快点?

TOP

  1. $log=gc a.log
  2. $name=$log -match "企业  名称"
  3. $quit=$log -match "退出当前"
  4. for($n=0;$n -lt $name.count;$n++){
  5.     $begin=$name[$n].split("",6,[StringSplitOptions]::RemoveEmptyEntries)
  6.     $end=$quit[$n].split("",[StringSplitOptions]::RemoveEmptyEntries)
  7.     $time=(New-TimeSpan -start $begin[0] -end $end[0])
  8.     "{0}{1}" -f '企业 >',$begin[-1]
  9.     "{0}{1}{2}{3}{4}{5}{6}" -f '执行时间 >',$time.hours,'h:',$time.minutes,'m:',$time.seconds,'s'
  10. }
  11. $null=[console]::readkey()
复制代码
是这样吗
1

评分人数

TOP

本帖最后由 WHY 于 2022-1-13 20:21 编辑
  1. @echo off
  2. PowerShell "(gc a.txt) -match '企业\s*名称:|退出当前' | forEach{if(++$i%%2){$a=$_ -split '>\s*企业\s*名称:'; '企业   > ' + $a[1];}else{$b=$_ -replace '>.*$'; $t=get-Date ([DateTime]$b-[DateTime]$a[0]).Ticks; '执行时间 > ' + '{0:HH}h:{1:mm}m:{2:ss}s' -f $t,$t,$t;echo '';}}" > b.txt
  3. pause
复制代码
1

评分人数

TOP

本帖最后由 娜美 于 2022-1-13 18:52 编辑

回复 4# WHY


   Hi,  WHY哥     
看上似乎很有骨感,   测试了一下   输出格式似乎不对    只有时间   只计算出第一个企业名称时间   其它的没有

TOP

回复 5# 娜美


   
为了大家一看明白,  我把拼一切...

我咋看不明白呢?
为何不给一个测试文本呢?

TOP

回复  娜美


   
我咋看不明白呢?
为何不给一个测试文本呢?
WHY 发表于 2022-1-13 19:06



   
可以,   内容格式系统就是这样记录的    请帮忙看一下
https://wwe.lanzoul.com/b01p087na
密码:5zbe

TOP

回复 8# 娜美


    已修改

TOP

回复 9# WHY


   谢谢WHY哥

TOP

返回列表