Войти

Показать полную графическую версию : [решено] Вывод в txt-файл разрешения видео форматов


lyohalyoha
22-07-2021, 17:44
Здравствуйте! Нужен батник,который создавал бы список разрешения(НЕ РАСШИРЕНИЯ и НЕ РАЗМЕР(вес)файла,а именно разрешение(например 720х480).Нужно закинуть батник в папку,запустить его и чтобы в этой же папке создался txt-файл с разрешением видео в таком же порядке,как видео в папке.Или может есть программа для показа разрешения видео из папок?Спасибо!
P.S.Функция в проводнике для отображения размеров(разрешения)видео не работает,ничего не показывается.Только у фоток.

Iska
23-07-2021, 04:31
Вам для каких целей этот файл будет нужен?

YuS_2
23-07-2021, 09:27
Или может есть программа для показа разрешения видео из папок? »
Результат зависит от постановки задачи...
Пока, могу предложить вот такой скрипт на powershell:
#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

lyohalyoha
23-07-2021, 15:39
Вам для каких целей этот файл будет нужен? »
Просто имеются больше 4000 видео и нужно разрешение у всех посмотреть.Каждое отдельно посмотреть-нереально.

Пока, могу предложить вот такой скрипт на powershell:
script.ps1 »
К сожалению у меня Powershell на ПК нету,не работает.Только батники работают :help:

YuS_2
23-07-2021, 15:59
у меня Powershell на ПК нету »
это, что у Вас за ПК? Установите.

lyohalyoha
23-07-2021, 17:05
это, что у Вас за ПК? Установите. »
Он есть у меня,запустил.Второй ваш код ввёл,исправив путь.Но в первый код script.ps1 что именно писать?Можете уточнить? :unsure:

YuS_2
23-07-2021, 17:54
Второй ваш код ввёл,исправив путь. »
И? Результат есть?

Но в первый код script.ps1 что именно писать?Можете уточнить? »
Что уточнить? Там строка запуска скрипта, в которой необходимо указать существующий путь к каталогу с файлами и при необходимости, поправить фильтр для отбора файлов.
Вы запускать пробовали? Текстовые файлы рядом со скриптом создаются?

Iska
23-07-2021, 18:52
Просто имеются больше 4000 видео и нужно разрешение у всех посмотреть. »
Тогда возьмите MediaInfo (https://mediaarea.net/ru/MediaInfo) и просто «натравите» его на каталог с видеофайлами:
https://i.imgur.com/3sFdazb.png

lyohalyoha
23-07-2021, 19:39
И? Результат есть? »
Неа,результатов нету.Текстовые файлы не создаются.Ниже написали,через MediaInfo-я уже так и делаю+использую Notepad++ с мною записанным макросом для удаления лишнего,оставив только строки Ширину и Высоту видео.

Тогда возьмите MediaInfo и просто «натравите» его на каталог с видеофайлами: »
Спасибо большое за совет! Так уже и делаю,выше написал как.




© OSzone.net 2001-2012