1

我一直在尝试找到一种方法来编辑“标签”部分,方法是将其与 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
}
4

0 回答 0