返回列表 发帖

[文本处理] 批处理或PowerShell计算字段之间的时间

a.txt 是ANSI编码
需要计算出2个字段之间的经过时间,   如果有多个相同"企业 名称" 字段, 计算出从发现有第一个 "企业 名称"  时间  到 "退出" 字段之间的时间过程,   以第一个有 "企业 名称" 时间开始为准
以小时为最大单位
似乎可以用  "企业  名称"  作为匹配字段,      似乎可以把 ">"作为分隔符  因为名称后面会有空格情况  也会有可能存在使用某些符号,  代码尽量不要被名称字符串影响或其他原因而导致有一些没有被计算出

不知道为什么,  发现这个有一些没有被计算到,  现在输出格式也需要改变一下
  1. 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
复制代码
  1. 计算后,  请使用另一种时间格式拼接显示  使用Tab   即"\t"  分隔符拼接
  2. 企业 名称:优 美 利 A 时间: 00h:05m:01s
  3. 企业 名称:利海 B 时间: 00h:01m:01s
复制代码
因为网页会把"\t"  分隔符变成空格, 所以提供输出格式样本
https://wwkt.lanzoul.com/ifa6C15sw4ne
awk   PowerShell    bat 码 都行

回复 3# wanghan519

偿试将a文本中内容多复制几遍测验,  似乎会有这样时间

  
  1. 企业 名称:利海 B        时间:0h:-58m:-59s
复制代码

TOP

回复 2# Batcher


   不好意思脑子有点混乱了  将代码放入代码框是不会变成空格的的

TOP

本帖最后由 娜美 于 2023-8-19 17:00 编辑

回复 4# 77七


   先谢谢了,   但运行过程中会返回如下提示,  有一部分输出,    目前不知道什么原因,  有点慢, 有很多名称没计算到
  1. 'CO' 不是内部或外部命令,也不是可运行的程序
  2. 'ww' 不是内部或外部命令,也不是可运行的程序
  3. 或批处理文件。
  4. 'J' 不是内部或外部命令,也不是可运行的程序
  5. 或批处理文件。
复制代码

TOP

本帖最后由 娜美 于 2023-8-19 17:31 编辑

回复 9# wanghan519

ok

TOP

回复 9# wanghan519


   代码没有任何问题,   
  谢谢哥哥

TOP

回复 11# Five66



像这种情况取第一个也行的,  
19:37:30 August 16 2023>   企业 名称:优 美 利 A
20:37:30 August 16 2023>   企业 名称:利海 B
20:39:30 August 16 2023>   企业 名称:利海 B
20:39:30 August 16 2023>   企业 名称:利海 B
20:38:31 August 16 2023>   退出

TOP

返回列表