【问题标题】:Powershell MediaInfo read files in dirPowershell MediaInfo 读取目录中的文件
【发布时间】:2013-12-01 12:09:18
【问题描述】:

我有点像 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
    }

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

感谢您的帮助。

【问题讨论】:

  • 那么问题出在哪里?
  • 我上面的脚本此时似乎无法正确捕获输出。该脚本最初在输出文件上发布了错误,但我将最后一行更改为:Start-Process $mediainfo $file.FullName -NoNewWindow | out-file "$outdir\$file.Name.txt" 现在我得到空的 .txt 文件和控制台本身的输出。

标签: powershell mediainfo


【解决方案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/下载

【讨论】:

  • 谢谢!这是前段时间我正在研究的,但我肯定会重新审视。
【解决方案2】:

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"

【讨论】:

  • 感谢您的帮助,但我仍然得到同样的结果;空文本文件和控制台中的所有输出。我正在使用 PS v3。问题是因为我使用Start-Process 来启动 MediaInfo 吗?也许有一种更明智的方式来调用我不知道的 exe?
  • 这太好了,谢谢!我没想到检查是否有特定于Start-Process 的输出参数。以下简化代码有效:Start-Process $mediainfo $file.FullName -NoNewWindow -RedirectStandardOutput "$outdir\$file.txt" 非常感谢!
猜你喜欢
  • 2020-12-16
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 2012-04-09
  • 2021-03-03
  • 2015-02-19
  • 1970-01-01
  • 2015-04-22
相关资源
最近更新 更多