Powershell MediaInfo读取目录中的文件

时间:2013-11-18 11:01:54

标签: powershell mediainfo

我有点像Powershell新手,我已经有目的地使用PS作为我的主要脚本语言大约6个月了。

我正在尝试使用powershell和mediainfo生成一个基本脚本,以解析目录(输入)中文件到各个.txt文件的另一个目录(输出)的详细信息(理想情况下删除了原始文件扩展名)。

源文件和输出文件名应该相同,例如:test.mp4 -> test.txt。 以下是我到目前为止所做的事情:

$indir = "C:\Temp\input"
$outdir = "C:\Temp\output\"
$mediainfo = "C:\Temp\MediaInfo_CLI_x64\MediaInfo.exe "

$files = Get-ChildItem $indir

foreach ($file in $files )
    {
    Write-Host "Scanning " $file.FullName
    Start-Process $mediainfo $file.FullName -NoNewWindow | out-file $outdir $file.Name
    }

我遇到了很多问题,我觉得解决方案非常简单。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

Start-Process有重定向STDIN,STDOUT和STDERR的参数,请试试这个:

Start-Process $mediainfo $file.FullName -NoNewWindow -Wait `
    -RedirectStandardOutput "$outdir\$($file.Name).txt"

通常你会使用调用操作符(&)启动外部程序,这可以让你使用常规输出流:

& $mediainfo $file.FullName | Out-File "$outdir\$($file.Name).txt"

如果程序没有写入成功输出流(STDOUT),您可以像这样重定向其他流(有关详细信息,请参阅about_Redirection):

& $mediainfo $file.FullName *>&1 | Out-File "$outdir\$($file.Name).txt"

答案 1 :(得分:1)

我已为MediaInfo编译了一个DLL包装器,因此您可以在PowerShell中使用它,就像这样

add-type -path 'C:\Users\username\Documents\WindowsPowerShell\vise_mediainfo.dll'
$MediaInfo = New-Object VISE_MediaInfo.MediaInfo
#Display all codec info about this PC
$MediaInfo.Option("Info_Codecs")
#Display information about a specific file
$MediaInfo.Open('C:\Users\username\Videos\video_name.mp4')
$MediaInfo.Inform()

https://ianmorrish.wordpress.com/v-ise/mediainfo/下载