批处理-如何对时间码执行数学运算?

问题描述 投票:0回答:4

我一直在处理批处理脚本,以更改某些.xml文件的格式/类型。

几乎完成,但是我在更改时间码时遇到问题。

这里是一个例子

  <Events>
    <Event In="00:00:20.650" Out="00:00:22.970"
    <Event In="00:00:23.050" Out="00:00:26.300"

此时间格式hh:mm:ss.ms应更改为hh:mm:ss:ff

这意味着将Milliseconds更改为Frames

这样做的公式如下:ms*25/1000或为简单起见[​​C0]

输出应为

ms*0.025

[Notes

  • 0.025是每毫秒的帧数。
  • 帧数必须是不带任何小数部分的整数。
  • 我正在使用 <Events> <Event In="00:00:20:16" Out="00:00:22:24" <Event In="00:00:23:01" Out="00:00:26:08" GNUWin库工具,因此可以使用Cygwin bcexprtr awk或其他解决方案来完成工作。
batch-file awk sed cygwin gnu
4个回答
2
投票

您可以使用awk脚本来做到这一点:


2
投票

PowerShell:


2
投票

这里是纯<# : batch portion @echo off & setlocal powershell "iex (${%~f0} | out-string)" goto :EOF : end Batch / begin PowerShell hybrid code #> 解决方案。此脚本对于具有特殊含义的所有字符都是安全的。基本上,它在给定的输入文件中搜索关键字或属性名称cmdIn,后跟Out和用引号=括起来的时间代码。如果找到,则毫秒部分被分割,转换为帧并附加到剩余的时间码上,以""分隔。每行可以有任意数量的时间码,只要它们的格式与示例数据中给出的格式相同,并且所有给定的关键字之一都在前面,就可以识别并转换所有时间码。


1
投票

使用密送

© www.soinside.com 2019 - 2024. All rights reserved.