【问题标题】:Powershell with mediainfo command for each file in directoryPowershell 对目录中的每个文件使用 mediainfo 命令
【发布时间】:2020-12-16 16:11:18
【问题描述】:

我正在尝试对文件夹中的多个媒体文件执行命令:.\mediainfo.exe --Output=XML "$path\file\*.*" > .\file\$output.xml。这是我目前拥有的:

$path = get-item F:\Desktop\work\
cd $path
$output = (Get-ChildItem '.\file\*.*').Basename
.\mediainfo.exe --Output=XML "$path\file\*.*" > .\file\$output.xml

我的问题是 MediaInfo.exe 将在 XML 输出文件上创建包含文件夹 F:\Desktop\work\file 中所有媒体的所有信息。

我尝试了以下方法:

$path = get-item F:\Desktop\work\
$dir = get-item $path\file | ? {$_.PSIsContainer}
cd $path
$output = (Get-Item '.\file\*.*').Basename
ForEach ($d in $dir){.\mediainfo.exe --Output=XML "$d" > .\file\$output.xml
}

但同样的事情。 output.xml 的名称将与所有媒体名称连接。例如,如果我有两个文件名 audio1.aif 和 audio2.aif,我的 XML 的名称将是 audio1 audio2.xml

知道如何实现吗?谢谢

【问题讨论】:

  • 文件夹名和预期的输出文件名有关系吗?
  • 不是文件夹名而是输出文件必须命名为文件夹中的媒体文件。

标签: powershell scripting mediainfo


【解决方案1】:

也许我错过了问题中的某些内容,但是对于文件名为源文件名 +“.xml”的 sidecar XML 文件,这个小脚本可以做到:

ForEach ($d in get-item "file\*.*"){
  .\mediainfo.exe --Output=XML "$d" > "$d.xml"
}

注意:生成的 MediaInfo XML 将具有绝对文件名(包括路径),因为绝对文件名提供给 MediaInfo。如果您更喜欢相对文件名(没有当前路径,也没有包含文件的目录名),您需要提供相对文件名:

$current = (Get-Item .).FullName
cd file
ForEach ($d in Get-Item "*.*"){
  $filename = Split-Path "$d" -Leaf
  ..\mediainfo.exe --Output=XML $filename > "$d.xml"
}
cd $current

如果您想要没有源文件扩展名的 XML 文件(不推荐,如果您获得 2 个具有相同基本名称的文件 egaavi 和 a.srt 的第一个文件的附属字幕文件,则会发出问题),您需要一个中间变量:

$current = (Get-Item .).FullName
cd file
ForEach ($d in Get-Item "*.*"){
  $filename = Split-Path "$d" -Leaf
  #$basename = Split-Path "$d" -LeafBase #Only in newest versions
  $basename = (Get-Item -Path "$d").BaseName
  ..\mediainfo.exe --Output=XML $filename > "$basename.xml"
}
cd $current

【讨论】:

  • 两个命令都很好用,谢谢!你知道我怎样才能得到没有媒体文件扩展名的 XML 名称吗?我为我的 XML 获取了 media.mp4.xml。
  • 删除扩展名(不推荐,如果你得到 2 个基本名称相同的文件 egaavi 和 a.srt 第一个文件的附属字幕文件),将“-Leaf”替换为“- LeafBase”,见doc
  • 谢谢!这不会发生,因为我只有一种具有唯一名称的文件。再次感谢。编辑:没用:prnt.sc/u78gx0
  • 我太快了,看起来该选项仅在最新版本中可用 + 结果不好,因为我修改了输入名称而不是输出名称。我用一个额外的例子修改了答案。
猜你喜欢
  • 2013-12-01
  • 2016-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 2013-10-28
  • 1970-01-01
  • 2012-12-23
相关资源
最近更新 更多