Цитата:
Цитата lyohalyoha
Или может есть программа для показа разрешения видео из папок? »
|
Результат зависит от постановки задачи...
Пока, могу предложить вот такой скрипт на powershell:
script.ps1
Код:
#requires -v 3.0
<#
.SYNOPSIS
Скрипт для получения строк детализированной информации из файлов.
.Description
Получает дополнительные свойства из файлов, в зависимости от выбранных параметров.
Для получения свойств одного файла, можно указать его с относительным или абсолютным
путем. Для массового получения свойств - необходимо указать каталог с файлами.
Скрипт параметризированный.
.Parameter Items
Обязательный: Указываются файлы или каталоги (в случае каталога, будут выбраны
файлы содержащиеся в нем по фильтру)
.Parameter Filter
Необязательный: Фильтр для отбора файлов. Поддерживаются маски
.Parameter Propnum
Необязательный: Единственный номер параметра или диапазон параметров, или набор
параметров. См. примеры
.Parameter Recurse
Переключатель: При наличии, будет осуществляться рекурсивная выборка файлов из
каталогов. Для элементов-файлов, переключатель игнорируется.
.Parameter Force
Переключатель: При наличии, будут выбираться скрытые, системные и т.п. файлы.
.Parameter Outfiles
Переключатель: Для осуществления вывода в отдельные файлы. Имя файла будет
составлено из имени и расширения обрабатываемого файла и нового расширения .txt
Файлы складываются рядом со скриптом.
.Example
.\script.ps1 -item 'd:\root1','d:\root2','d:\root3\file.mp4' -propnum 27 -recurse -force
Это пример выборки файлов, указанных в перечислении -items, для дальнейшей обработки,
Будет получено свойство с номером 27. Каталоги из перечисления будут обработаны рекурсивно
для выборки всех файлов.
.Example
.\script.ps1 -item 'd:\root1' -propnum (1..2048) -force
Это пример выборки файлов из указанного каталога, для дальнейшей обработки.
Будут получены свойства с номерами от 1 до 2048. Выбираются все файлы.
.Example
.\script.ps1 -item 'd:\root1' -filter ('*.mpg','*.avi','*.mkv','*.mp4','*.3gp','*.vob') `
-propnum 27 |ft
Это пример выборки файлов из указанного каталога, для дальнейшей обработки.
Будет получено свойство с номером 27. Выбираются только доступные файлы и только с
указанными расширениями в фильтре.
.Notes
Created By YuS
Version: 1.00
Date: 2/04/2018
Purpose/Change: Первая версия
Version: 2.00
Date: 17/09/2019
Purpose/Change: Изменена логика скрипта, добавлена возможность выборки набора свойств.
Добавлена возможность вывода в консоль. Добавлен подсчет общей продолжительности
медиафайлов, если выбрано единственное свойство 27. Расширена возможность
группировки по параметрам.
Поправлены старые баги, добавлены новые. :)
.Link
...
#>
[CmdletBinding()]
Param (
[parameter(mandatory=$true)]
[string[]]$items,
[string[]]$filter = '*.*',
[ValidateRange(0,2048)]
[int[]]$propnum = 27,
[switch]$recurse,
[switch]$force,
[switch]$outfiles
)
function testpth($x){
$pars = @{}
$pars.path = [management.automation.wildcardpattern]::escape($x)
if ($force){$pars.force = $true}
if ($filter){$pars.include = $filter}
if(test-path $x -pathtype container){
$pars.path += '\*'
if ($recurse){$pars.recurse = $true}
dir @pars|?{!$_.psiscontainer}
} elseif (test-path $x -pathtype leaf){
gi @pars
} else {
write-host Path no correct
sleep -s 5
break
}
}
function info($var,$k){
process{
$a = new-object -com 'shell.application'
$b = $a.namespace($var.directoryname)
[int]$i=0
foreach($i in $propnum){
$rslt = $b.getdetailsof($b.parsename($var.name),$i)
if($rslt){
[pscustomobject]@{
IDFile = $k
IDProp = $i
Name = $var.name
FullName = $var.fullname
DirectoryName = $var.directoryname
Type = $b.getdetailsof($null,$i)
Context = $rslt
}
}
}
}
}
$arr = $items|%{testpth $_}|%{$n=1}{info $_ $n;$n++}
if ($outfiles){
# Подготовка хэш-таблиц с последующей группировкой
$p = $arr|group idfile -ashash -asstr
# Вывод в отдельные файлы
1..$p.count|%{
if($p."$_".idprop.length -eq 1){
$name = [string]$p."$_".name + '.txt'
}else{
$name = [string]$p."$_".name[0] + '.txt'
}
$p."$_"|select idfile,idprop,fullname,type,context|out-file -lit $name -app -enc utf8
}
} else {
$arr
}
if ($propnum.length -eq 1 -and $propnum -eq 27){
try{
$total = [timespan]::new(0,0,(([timespan[]]$arr.context).totalseconds|
measure -sum).sum)
write-host "Общая продолжительность: $total" -for cyan
}catch{
write-host 'Context' не является продолжительностью медиафайла: "`n" $_ -for red
}
}
Использовать из консоли powershell, так:
Код:
.\script.ps1 -item 'D:\TEST' -filter ('*.mp4','*.mpg') -prop (314,316) -outfiles
- рядом со скриптом будут созданы текстовые файлы с наименованиями, такими же, как и у видеофайлов. Внутри текстовых файлов будут указаны параметры высоты и ширины кадра.
Или просто вывод в консоль:
Код:
.\script.ps1 -item '.\test' -filter ('*.mp4','*.mpg') -prop (314,316)|select Name,Type,Context
|