2016-10-06 2 views
2

Итак, я пытаюсь настроить простой способ запуска видео с файла bat, и сначала запустить Mediainfo, чтобы получить длину видео, чтобы затем он мог остановить vlc или независимо от того, когда это делается.используя выход из mediainfo как переменной в другой команде

Complete name       : C:\Users\Tyler\Desktop\Psych s05e11.mp4 
Format         : MPEG-4 
Format profile       : Base Media 
Codec ID         : isom (isom/iso2/avc1/mp41) 
File size        : 116 MiB 
Duration         : 42 min 36 s 
Overall bit rate       : 382 kb/s 
Writing application      : Lavf55.13.102 

Это выход из MediaInfo я попал в текстовый файл, я пытаюсь просто вытащить 42 и 36 от бита длительности и использовать его в другую команду. Я должен также добавить, что эти цифры должны использоваться отдельно. Благодаря!

Редактировать: Спасибо, что ответили, что все любят помощь; Вот что я пытаюсь запустить прямо сейчас:

mediainfo.lnk --Language=raw --Output=General;%Duration% "C:\Users\Tyler\Desktop\Psych s05e11.mp4" 

и выход:

2556249 

Теперь мне нужен способ, чтобы сделать первые четыре цифры и использовать их в другой команде, так или иначе сделать 2556 переменной?

+1

Можете ли вы после того, что вы пробовали? Вы можете использовать FOR/F и FIND для решения этой проблемы. – soja

+0

Вид необходимости видеть, как вы выполняете mediainfo, прежде чем мы сможем предоставить решение. – Squashman

ответ

0

Если вам нужна длительность, используйте, например, эта команда:

mediainfo "--Output=General;%Duration%" YourFileName.ext 

В общем случае, когда вы думаете, в какую-то автоматизацию, предпочитает использовать, например:

mediainfo -f --Language=raw YourFileName.ext 

и выберите строки, которые лучше всего соответствуют вашей необходимости избегать полей с «/ строкой «потому что они предназначены только для отображения (не для автоматизации).

Jérôme, разработчик MediaInfo.

+0

Я запускаю команду так: mediainfo --Language = raw --Output = General;% Duration% "filename.ext" >> "outputfile.txt", и я получаю только продолжительность, как хочу, спасибо за эту помощь! –

+0

Вот странная проблема, с которой я столкнулся; когда я запускаю команду из терминала, как я показал в последнем комментарии, я получаю правильный вывод, однако использование одной и той же команды в пакетном файле возвращает выход без каких-либо параметров, он работает как: mediainfo --Output = file: \\ file.txt "filename.ext". Предоставлять слишком много информации! Что я могу сделать, чтобы обойти это? –

+0

Просто, чтобы сказать вам (как разработчик), вы никогда не используете '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '. Лучше использовать другой символ как '$'. В любом случае здорово! – SachaDee

0

FOR /F Использование

@echo off 
for /f "delims=" %%a in ('mediainfo "--Output=General;%%Duration%%" "C:\Users\Tyler\Desktop\Psych\s05e11.mp4"') do set $Duration=%%a 

Echo %$Duration% 

Используя временный файл

@echo off 
mediainfo.exe --Language=raw --Output=General;%%Duration%% "C:\Users\Tyler\Desktop\Psych s05e11.mp4" >out.txt 
set /p $Duration= <out.txt 
set $Duration=%$Duration:~0,4% 

echo Result = %$Duration% 
del out.txt 

Другой способ, используя @ Жерома Мартинеса [сырой -output] идеи. без временного файла, используя findstr:

@echo off 
for /f "tokens=2 delims=:" %%a in ('mediainfo -f --Language=raw "C:\Users\Tyler\Desktop\Psych s05e11.mp4" ^| findstr /i "duration"') do (
    set $Duration=%%a 
    goto:next 
) 

:next 
set $Duration=%$Duration:~1,4% 
echo %$Duration% 
+0

Спасибо за помощь; Кажется ближе, чем все, что у меня есть до сих пор! Однако эхо-выход: Результат = ~ 0,4 –

+0

Выяснено, что путь был настроен неправильно, получил то, что теперь находится на выходе: Результат = Alte –

+0

Хорошо, и когда вы просто выполняете 'mediainfo.lnk --Language = raw --Output = General; ^% Duration%% C: \ Users \ Tyler \ Desktop \ Psych s05e11.mp4 "' Каков точный вывод? Во всех случаях вам лучше работать непосредственно на '.exe', а не на .lnk – SachaDee

0

Хорошо, вот что я сделал, наконец, спасибо за помощь!

C:\mediainfo\MediaInfo.exe --Language=raw --Output=General;%%Duration%% "C:\Users\Tyler\Desktop\Psych_s05e11.mp4" >out.txt 
set /p $Duration= <out.txt 
set $Duration=%$Duration:~0,4% 

echo Result = %$Duration% 
del out.txt 
pause 

и выход:

C:\mediainfo\MediaInfo.exe --Language=raw --Output=General;%Duration% "C:\Users\Tyler\Desktop\Psych_s05e11.mp4" >out.txt 
set /p $Duration= <out.txt 
set $Duration=2556 
echo Result = 2556 
Result = 2556 
del out.txt 
pause 
Press any key to continue . . . 

взял @ECHO от убираться там, чтобы вы могли видеть это все

+0

Можете ли вы поместить ответ как разрешенный Пожалуйста! – SachaDee

Смежные вопросы