Windowsでは、コマンドラインからAVIファイルの長さ(秒単位など)を取得する方法はありますか?
3を使っても大丈夫ですrd パーティーツール-一般的であればあるほど良い。
次のPowerShellスクリプトを使用できます
_$path = $Args[0]
$Shell = New-Object -COMObject Shell.Application
$folder = Split-Path $path
$file = Split-Path $path -Leaf
$shellfolder = $Shell.Namespace($folder)
$shellfile = $shellfolder.ParseName($file)
$shellfolder.GetDetailsOf($shellfile, 27);
_
* .ps1ファイルとして保存します。例: _duration.ps1
_。 _duration.ps1 path\to\video\file
_のように呼んでください
_hh:mm:ss
_形式で時間を与えます。秒単位で表示する場合は、最後の行を[timespan]::Parse($shellfolder.GetDetailsOf($shellfile, 27)).TotalSeconds
に変更します。
これは、Windowsが読み取ることができる期間があるすべてのタイプで機能します。以下の情報源から作成しました
もちろん、Shell.Applicationを使用しているため、任意のWScript言語を使用して同じ目的を達成できます。たとえば、これはbat-jscriptのハイブリッドバージョンです。通常の* .batファイルとして保存し、ビデオファイルのパスを渡します。
_@if (@CodeSection == @Batch) @then
@echo off
cscript //e:jscript //nologo "%~f0" %1
exit /b
@end
// JScript Section
var filepath = WScript.Arguments.Item(0);
var slash = filepath.lastIndexOf('\\');
var folder = filepath.substring(0, slash);
var file = filepath.substring(slash + 1);
var Shell = new ActiveXObject("Shell.Application");
var shellFolder = Shell.NameSpace(folder);
shellfile = shellFolder.ParseName(file);
var duration = shellFolder.GetDetailsOf(shellfile, 27);
WScript.Echo(duration);
_
また、秒を取得するには、時間を分割し、時間/分を倍数にする必要がありますが、それは簡単です