这是我的一个批处理文件中的代码,其中包含变量。
@echo off
REM -----choose coder-----------
set "coder=h264_nvenc"
REM ----Chose bitrate (3,5,8 etc)--------
set "bitrate=3"
REM ---Shoose fps (25,30,50,60)----
set "fps=30"
REM ----audiobitrate (96, 128,192,256,312)---
set "audiobitrate=128"
REM ---Audio samplerate (44100, 48000)-----
set "sampler=48000"
for %%i in (1.ishodniki*.mov,1.ishodniki*.mp4); do ffmpeg -i "%%i" -codec:v %coder% -b:v %bitrate%M -filter:v fps=30 -codec:a ac3 -b:a %audiobitrate%K -ar %sampler% "2.segments%%~ni.mp4"
@pause
我想从配置文件中读取变量,而不是从批处理文件中
我创建了一个
config.txt
,
它有这样的结构
-----choose the coder (libx264 or h264_nvenc)-----------
coder=libx264
----Choose bitrate(3,5,7 etc)--------
bitrate=3
---the name of the listfile---
list=list.txt
我应该如何读取 config.txt 以及如何在我的批处理中使用这些变量
这是您可以尝试的方法,它通过 for 循环读取所有变量名称,因此它会过滤每个 txt 行中“=”前面的所有内容,并创建一个具有相同名称的变量。 在第二个 for 循环中,它然后从“=”符号后面的同一行读取值,理论上您现在也可以通过扩展 txt 文件来创建新变量。
REM create the variables
for /f "tokens=1,2 delims== skip=2" %%A in (config.txt) do (
set "%%A=%%B"
)
REM Fill the variables
for %%i in (%list%) do (
ffmpeg -i "%%i" -codec:v %coder% -b:v %bitrate%M -filter:v fps=%fps% -codec:a ac3 -b:a %audiobitrate%K -ar %sampler% "2.segments%%~ni.mp4"
)
但是,您可能想要包含一些内容,以检查所有必需的变量是否已正确读取,以确保脚本不会随机崩溃。这是如何做到这一点:
if not defined VariableName (
echo womp womp
pause
exit /b
)