使用批处理或powershell

时间:2015-08-12 21:28:32

标签: windows powershell csv batch-file

我在Win 7 x64中使用MediaInfo CLI版本,当视频文件在StaxRip中完成编码时,通过模板自动生成CSV。 但是,它的CLI版本对于如何应用输出模板至关重要(长话短说,它的变量是部分(一般,视频,音频,文本),你只能在一个块中使用一个部分,你不能回到模板下面的前一部分,所以我想在其他地方找到的一个变量最终会出现在自动化甚至工作的错误位置。

像这样:

UTC 2015-05-21 18:04:06,Episode01.mp4,211 MiB,22mn 7s,29.970 fps,1 210 Kbps,High 10@L3,120 Kbps,AAC,Japanese
UTC 2015-05-21 19:16:18,Episode02.mp4,211 MiB,22mn 6s,29.970 fps,1 212 Kbps,High 10@L3,118 Kbps,AAC,Japanese
UTC 2015-05-21 20:24:57,Episode03.mp4,211 MiB,22mn 6s,29.970 fps,1 212 Kbps,High 10@L3,119 Kbps,AAC,Japanese

我正在寻找的是成为最后一列的时间戳部分(第一列):

Episode01.mp4,211 MiB,22mn 7s,29.970 fps,1 210 Kbps,High 10@L3,120 Kbps,AAC,Japanese,UTC 2015-05-21 18:04:06

如果可能的话,我非常希望在.bat或Powershell脚本中找到解决方案,因为这些已经在前面提到的过程中使用过了,但是对小型单用途应用程序是开放的。关键部分是能够从CMD或主.bat文件运行。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

我尝试了这个并正在工作。

[string] $SourceFileFullPath = "C:\Projects\INT\CSV_ColumnSwap.csv"
[Array] $SourceFileContent = Get-Content $SourceFileFullPath

[int] $ArrayLength = $SourceFileContent.length  
for ($i=0; $i -lt $ArrayLength; $i++) {
        $splitter1 = ","
        $LineData = $SourceFileContent[$i] -split $splitter1
        $DateTimeV, $Linedata = $LineData
        $LineData += $DateTimeV     
        $LineData -join "," >> Result.csv
}

我对性能方面不太满意。 YMMV。

干杯