Analizar la salida de contig.exe a *.csv usando la línea de comandos o PowerShell

Analizar la salida de contig.exe a *.csv usando la línea de comandos o PowerShell

Estoy intentando analizar el archivo de salida de contig.exe en un archivo de valores separados por comas. He desarrollado un método para hacer esto: Notepad++, pero dada la cantidad de archivos que tengo que analizar (cientos de archivos de texto), me gustaría tener un método automatizado usando la línea de comandos o PowerShell.

Por ejemplo, me gustaría convertir esto:

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

...dentro de esto:

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

¿Algunas ideas? ¡Gracias!

Respuesta1

En PowerShell, simplemente aplica su expresión regular usando el -matchoperador y luego genera cada coincidencia separada por comas:

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

producción:

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

Tenga en cuenta que he incluido las columnas entre comillas para manejar las columnas con espacios.

información relacionada