我一直在尝试找到一种方法来编辑“标签”部分,方法是将其与 MP4 的“标题”部分交换。
问题是我不能用 ExiftTool、MP3Tag、MediaMonkey 做到这一点,而且尝试手动右键单击并更改每个文件的标签是一场噩梦。
我最接近的是一个名为 MP4 Video & Auto Tag Editor 的应用程序,因为它可以让您编辑 Microsoft Xtra Atoms,但是唉......它没有办法为整个目录执行此操作
我找到了这个 PowerShell 脚本,它显示了所有元数据。
但是,我不知道如何准确编辑“标签”部分以实际自定义和交易值。我知道 ExiftTool 只能“读取”而不是“写入”,所以我最大的恐惧是我面临同样的问题。
SRCDIRECTORY代表我正在使用的目录...
Function Get-MP3MetaData
{
[CmdletBinding()]
[Alias()]
[OutputType([Psobject])]
Param
(
[String] [Parameter(Mandatory=$true, ValueFromPipeline=$true)] $Directory
)
Begin
{
$shell = New-Object -ComObject "Shell.Application"
}
Process
{
Foreach($Dir in $Directory)
{
$ObjDir = $shell.NameSpace($Dir)
$Files = gci $Dir| ?{$_.Extension -in '.mp3','.mp4'}
Foreach($File in $Files)
{
$ObjFile = $ObjDir.parsename($File.Name)
$MetaData = @{}
$MP3 = ($ObjDir.Items()|?{$_.path -like "*.mp3" -or $_.path -like "*.mp4"})
$PropertArray = 0,1,2,12,13,14,15,16,17,18,19,20,21,22,27,28,36,220,223
Foreach($item in $PropertArray)
{
If($ObjDir.GetDetailsOf($ObjFile, $item)) #To avoid empty values
{
$MetaData[$($ObjDir.GetDetailsOf($MP3,$item))] = $ObjDir.GetDetailsOf($ObjFile, $item)
}
}
New-Object psobject -Property $MetaData |select *, @{n="Directory";e={$Dir}}, @{n="Fullname";e={Join-Path $Dir $File.Name -Resolve}}, @{n="Extension";e={$File.Extension}}
}
}
}
End
{
}
}
ForEach($item in ("SRCDIRECTORY" |Get-MP3MetaData)){
$itemTitle = $item.Title
$itemTags = $item.Tags
}