Windows Batch - pobranie wyniku pracy programu

0

Witam.
Szukałem dość długo i jakoś nie mogę znaleźć.
Moim problemem jest wywołanie programu exe w pliku bat i pobranie wyniku pracy tego programu
prosty przykład:

@echo off
zmienna = call program.exe

kombinowałem sporo i nie umiem przydzielić do zmiennej wyniku tak wywołanego programu

0

Co jest wynikiem pracy tego programu? Jakiś przykład?

0

Konwersja plików wideo przez ffmpeg.exe, nvenc64.exe a potrzebuje pobrać wielkość bitrate z pliku wideo przez ffprobe.exe tak aby podobnym bitrate stosować to konwersji.

ps dodam że ffprobe.exe z odpowiednimi parametrami zwraca tylko jedną liczbę

dodam uproszczony listing

@echo off
rem jak wynik wywołania ffprobe wstawic do zmiennej ???
zmienna=call ffprobe -v error -hide_banner -select_streams v -show_entries format=bit_rate -of default=noprint_wrappers=1:nokey=1 %1
echo "Wynik : " %zmienna%
pause
echo on

0
@echo off
for /f %%i in ('ffprobe -v error -hide_banner -select_streams v -show_entries format=bit_rate -of') do set zmienna=%%i
echo "Wynik : " %zmienna%
0

cały ciąg jest taki:
ffprobe -v error -hide_banner -select_streams v -show_entries format=bit_rate -of default=noprint_wrappers=1:nokey=1
plus nazwa pliku wraz ze ścieżką %1
ffprobe -v error -hide_banner -select_streams v -show_entries format=bit_rate -of default=noprint_wrappers=1:nokey=1 %1

Po takiej zmianie jest błąd :
Argument 'noprint_wrappers' provided as input filename, but 'bit_rate' was already specified.

2

https://stackoverflow.com/questions/44492252/batch-store-ffprobe-as-variable

@echo off
for /f %%i in ('ffprobe -v error -hide_banner -select_streams v -show_entries format^=bit_rate -of default^=noprint_wrappers^=1:nokey^=1 %1') do set zmienna=%%i
echo "Wynik : " %zmienna%
0

O teraz działa jak należy - dzięki za pomoc.

0

Jeśli wynik ma być tylko pokazany w określonej formie, to może być też tak:

@echo off
set /p "=Wynik dla %1 : " < nul
ffprobe -v error -hide_banner -select_streams v -show_entries format=bit_rate -of default=noprint_wrappers=1:nokey=1 %1
0

Jeszcze jedno pytanie odnośnie rodzajów zmiennych w plikach bat.
Może listing pierwszy :

@echo off
set nameFile=%~dpn1
set extFile=mkv
set outFile=%nameFile%.%extFile%
if -%1-==-- echo "podaj nazwe pliku do konwersji !!!" & exit /b
for /f %%i in ('ffprobe -v error -hide_banner -select_streams v -show_entries format^=bit_rate -of default^=noprint_wrappers^=1:nokey^=1 %1') do set zmienna=%%i
echo "Wynik : " %zmienna%

Tutaj wstawiam zmienną z bitrate lecz wywala się błąd tak jakby nie ten format zmiennej niby wyświetla liczbę lecz nie przyjmuje jej.
Gdy zmienię %zmienna% na liczbę stałą czyli np 12345 to działa , nie wiem więc co jest nie tak.
Dodam że w pythonie mam skrypt który przerabia mi wszystkie pliki wideo w danym katalogu i tam nie ma problemu z takim zapisem

NVEncC64.exe  --preset quality --cbrhq %zmienna% --profile high -c h264 --audio-codec aac --audio-bitrate 192 --audio-stream :stereo --bframes 4 --ref 4 --max-cll 1000,500 --bref-mode middle  -i %1 -o "%outFile%"
pause
echo on

1 użytkowników online, w tym zalogowanych: 0, gości: 1