2016-06-29 3 views
0

Мне нужно получить ширину и высоту файла изображения с помощью ffprobe и сохранить его в переменных с помощью пакетной (Windows), чтобы впоследствии использовать эти значения.Как вернуть ширину и высоту видео/изображения с помощью ffprobe & batch

Я пытался сделать это,

@echo off 
for /f "tokens=1-2" %%i in ('ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=width,height %1') do set W=%%i & set H=%%j 
echo %W% 
echo %H% 

Но не исполняет с

Argument '_' provided as input filename, but 's' was already specified. 

P.S. Я также попытался ImageMagick определить подобным образом, но мне кажется, что определить есть ошибка при возврате высоты для GIF-файлов

ответ

1

мне удалось настроить вам сценарий, и он работает, вы можете попробовать этот способ:

@echo off 
ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=width %1 >> width.txt 
ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height %1 >> height.txt 
FOR /f "tokens=5 delims==_" %%i in (width.txt) do @set width=%%i 
FOR /f "tokens=5 delims==_" %%i in (height.txt) do @set height=%%i 
echo width=%width% 
echo height=%height% 
del width.txt && del height.txt 
pause 
+0

Небольшое объяснение того, что вы добавили и почему было бы полезно. – glls

+0

Таким образом, вы не получите сообщение об ошибке: 'Аргумент '_' предоставлен в качестве входного имени файла, но 's' уже указан.' – mrzed

0

Просто сбегите от = персонажа ^ и разделите его на w и h (возможно, способ получить их сразу, но я не знаю).

@echo off 

for /f "tokens=5 delims==_" %%i in ('ffprobe -v error -of flat^=s^=_ -select_streams v:0 -show_entries stream^=width %1') do set W=%%i 
echo %W% 

for /f "tokens=5 delims==_" %%i in ('ffprobe -v error -of flat^=s^=_ -select_streams v:0 -show_entries stream^=height %1') do set H=%%i 
echo %H%