Se puede realizar en una sola línea:
Este código lee los nombres de todos los archivos *.mxf del directorio actual.
Por cada uno de ellos (foreach), llamamos a MediaInfo.
De todo lo que devuelve, nos quedamos con lo que queremos.
Y finalmente, lo formateamos y sacamos a pantalla.
Para guardarlo a un archivo, vale con agregar '> resumen.txt' al final.
En forma de programa:
Ejemplo de salida:
d:\archivo1.mxf | 34mn 21s | 2014-12-04
d:\archivo2.mxf | 3mn 21s | 2014-12-04
d:\archivo3.mxf | 4mn 21s | 2014-12-04
d:\archivo4.mxf | 5mn 21s | 2014-12-04
Código (bash) [Seleccionar]
perl -E '$del = qr/\s*:\s*/; foreach (<*.mxf>) { ($name,$duration,$encoded) = qx(c:/mediainfo/MediaInfo.exe $_) =~ /Complete name$del(.*?)\n.+?Duration$del(.*?)\n.+?Encoded date$del(\d{4}-\d{2}-\d{2}).+?\n/ms; say join " | ", $name, $duration, $encoded; }'
Este código lee los nombres de todos los archivos *.mxf del directorio actual.
Por cada uno de ellos (foreach), llamamos a MediaInfo.
De todo lo que devuelve, nos quedamos con lo que queremos.
Y finalmente, lo formateamos y sacamos a pantalla.
Para guardarlo a un archivo, vale con agregar '> resumen.txt' al final.
En forma de programa:
Código (perl) [Seleccionar]
#!/usr/bin/perl
$DEL = qr/\s*:\s*/; # definimos un delimitador que se repite varias veces
foreach $mxf (<*.mxf>) { # para todos los archivos .mxf del dir. actual
# llamamos a MediaInfo
my $resultado = qx(c:/mediainfo/MediaInfo.exe $mxf);
# extraemos lo que queremos desde el $resultado
($name,$duration,$encoded) =
$resultado =~ /Complete name$DEL(.*?)\n.+?Duration$DEL(.*?)\n.+?Encoded date$DEL(\d{4}-\d{2}-\d{2}).+?\n/ms;
# formateamos los valores y los sacamos
say join ' | ', $name, $duration, $encoded;
}
Ejemplo de salida:
d:\archivo1.mxf | 34mn 21s | 2014-12-04
d:\archivo2.mxf | 3mn 21s | 2014-12-04
d:\archivo3.mxf | 4mn 21s | 2014-12-04
d:\archivo4.mxf | 5mn 21s | 2014-12-04