首先,我使用Google搜索並搜索瞭如何解決此問題,但沒有運氣。我正在製作一個批處理文件,以將文件中的音頻重新編碼爲aac(如果是ac-3或使用ffmpeg的ogg)。我知道如何使用ffmpeg進行轉換,而不是僅在音頻匹配某個編解碼器時如何實現自動化。爲了獲得文件的音頻編解碼器,我有兩種不同的方法,一種使用ffprobe,另一種使用MediaInfo。如何將命令輸出設置爲批處理中的變量
MediaInfo --Inform="Audio;%%Format%%" "input.mkv"
或
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "input.mkv"
不過,我的問題是從命令的輸出設置變量。這是我一直在嘗試的代碼,無濟於事。
SETLOCAL
for %%a in (*.mp4) do (
MediaInfo --Inform="Audio;%%Format%%" "%%a">codec.txt
SET /p codec=<codec.txt
DEL codec.txt
ECHO %codec%
)
pause
很明顯,這只是我目標的一部分,但這是我看不到的部分。我通過刪除「DEL codec.txt」部分來檢查,實際上是將正確的輸出存儲在文本文件中,但不會將其導入到變量中。無論如何,我可以設置輸出到一個變量是好的,這只是我經常在我的搜索中找到的方式。
任何幫助,非常感謝。
可能重複[windows批處理命令爲循環集環境變量](http://stackoverflow.com/questions/17598638/windows-batch-command-for-loop-set-environment-variable) –
可能重複的[批處理 - 分配命令輸出到變量](http://stackoverflow.com/questions/16203629/batch-assign-command-output-to-variable);也相關:[批處理 - 分配命令輸出與變量變量](http://stackoverflow.com/questions/28663803/batch-assign-command-output-with-variables-to-variable) – aschipfl