答案1
据我所知,如果不使用 WScript 脚本,CMD 就无法获取元数据属性,例如期间,作曲家, 或者比特率。 然而,电源外壳确实提供了设施来收集这些信息。
以下脚本经过改编来自 StackOverflow, 跑进电源外壳,递归扫描文件夹并管道文件夹,文件名和期间转换为 CSV。
$Directory = "E:\Audio Files\_.mp3\Albeniz, Isaac"
$Shell = New-Object -ComObject Shell.Application
Get-ChildItem -Path $Directory -Recurse -Force | ForEach
{
$Folder = $Shell.Namespace($_.DirectoryName)
$File = $Folder.ParseName($_.Name)
$Duration = $Folder.GetDetailsOf($File, 27)
[PSCustomObject]@{
Folder = $_.DirectoryName
Name = $_.Name
Duration = $Duration}} | Export-Csv -Path "C:/temp/out.csv" -NoTypeInformation
它创建下面显示的 CSV。
根据需要修改脚本以定位文件并显示或隐藏元数据。
答案2
使用ffprobe.exe (FFmpeg)在包含要列出的文件的文件夹内循环
@echo off
cd /d "D:\Path\To\mp4\Videos\Folder\"
set "_ffprobe=C:\Program Files\FFmpeg\Bin\ffprobe.exe"
for /R %%I in (*.mp4)do @for /f eol^=^|delims^=. %%i in ('
@"%_ffprobe%" -i "%%~fI" -show_entries format^=duration -v quiet ^
-of csv^="p=0" -sexagesimal^|findstr/e .[0-9]')do echo\"%%~nxI",'0%%~i>>".\file.csv"