CMD の使用: フォルダー内のすべての MP4 を一覧表示し、その継続時間を一覧表示する

CMD の使用: フォルダー内のすべての MP4 を一覧表示し、その継続時間を一覧表示する

現在、次のコードを使用して、file.CSVすべての .mp4 タイトルのリストを含むファイルを作成しています。

dir /s /b *.mp4 > listmp4.csv

リストに各ビデオの長さを含めたいのですが、
コマンド ラインはどうすればよいですか?

CSV に次の数字も含めたいです:

ここに画像の説明を入力してください

答え1

私の知る限り、CMDはWScriptスクリプトを使用せずに、次のようなメタデータ属性を取得する方法はありません。間隔作曲家、 またはビットレート。 しかし、パワーシェル施設を提供するその情報を収集するためです。

以下の脚本は、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が作成されます。

LibreOffice Calcで表示される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"

関連情報