使用命令行或 PowerShell 将 contig.exe 输出解析为 *.csv

使用命令行或 PowerShell 将 contig.exe 输出解析为 *.csv

我正在尝试将 contig.exe 的输出文件解析为逗号分隔值文件。我已经开发了一种方法来执行此操作,即 Notepad++,但考虑到我必须解析的文件数量(数百个文本文件),我希望使用命令行或 PowerShell 来实现自动化方法。

例如,我想将其转换为:

Contig v1.7 - Makes files contiguous
Copyright (C) 1998-2012 Mark Russinovich
Sysinternals - www.sysinternals.com


Processing E:\$Mft...
E:\$Mft is in 80309 fragments

Processing E:\$Mft::$BITMAP...
E:\$Mft::$BITMAP is in 2202 fragments

Summary:
     Number of files processed   : 2
     Average fragmentation       : 41255.5 frags/file

...变成这样:

E:\$Mft,80309 fragments
E:\$Mft::$BITMAP,2202 fragments

有什么想法吗?谢谢!

答案1

在 powershell 中,只需使用运算符应用正则表达式-match,然后输出用逗号分隔的每个匹配项:

contig.exe | foreach-object{ if($_ -match "(.*) is in (.*)") {"`"$($Matches[1])`",`"$($Matches[2])`""}} 

输出:

"E:\$Mft","80309 fragments" 
"E:\$Mft::$BITMAP","2202 fragments"

请注意,我已将列括在引号中,以处理带有空格的列

相关内容